在使用JavaSwing向容器添加組件的時候,如果沒有布局管理器,那么就得考慮很多東西,比如組件的位置、大小等等都要與先考慮,就顯得格外的麻煩。下面我將分享Swing自身提供的布局管理器的類型。
邊框布局管理器
BorderLayout(邊框布局管理器),是Window、JFrame和JDialog的默認布局管理器。它主要將窗口分為了五個部位,分別是東(East)、西(West)、南(South)、北(North)和中(Center),分別對應(yīng)了窗口的右、左、下、上、中。如下示意圖所示:
BorderLayout的常用構(gòu)造方法:
- BorderLayout() 創(chuàng)建一個沒有間隙的 Border 布局
- BorderLayout(int hgap, int vgap) 創(chuàng)建一個有間隙的 Border 布局,其中 hgap 表示橫向間隙、 vgap 表示縱向間隙。
具體實例代碼:
import javax.swing.*;
import java.awt.*;
public class Border {
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setBounds(100,100, 800,600);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setLayout(new BorderLayout()); // 設(shè)置為沒有間隙的 Border 布局
JButton btn1 = new JButton("上");
JButton btn2 = new JButton("左");
JButton btn3 = new JButton("中");
JButton btn4 = new JButton("右");
JButton btn5 = new JButton("下");
jf.add(btn1, BorderLayout.NORTH);
jf.add(btn2, BorderLayout.WEST);
jf.add(btn3, BorderLayout.CENTER);
jf.add(btn4, BorderLayout.EAST);
jf.add(btn5, BorderLayout.SOUTH);
jf.setVisible(true);
}
}
運行結(jié)果:
根據(jù)以上運行結(jié)果可以看見,在對應(yīng)的位置會自動填充相應(yīng)的內(nèi)容。那么如果對應(yīng)的位置沒有的內(nèi)容,那么會發(fā)生什么呢?我們可以先嘗試把其中一個注釋掉,結(jié)果運行如下:
可見,命名為“上”的按鈕已經(jīng)消失掉了,取而代之的是左中右自動填充了缺失的部分。嘗試了分別將其他幾個注釋掉,也是一樣的結(jié)果,可以得出CENTER區(qū)域會自動拉伸填充缺失的部分。
流式布局管理器
FlowLayout(流式布局管理器),是JPanel和JApplet的默認布局管理器。FlowLayout 會按照從上往下,從左到右的順序規(guī)律逐個定位組件。跟別的布局管理器不一樣的是,F(xiàn)lowLayout不會限制它里面所有組件的大小,而是允許這些組件有自己的大小。
常用構(gòu)造方法如下:
- FlowLayout() 默認是創(chuàng)建一個居中對齊,水平垂直皆為5像素的布局管理器。
- FlowLayout(int align) 創(chuàng)建一個水平垂直為5像素,自定義是左對齊、右對齊或是居中的布局管理器。
- FlowLayout(int align, int hgap, int vgap) 自定義對齊方式,以及水平垂直方向像素的布局管理器。
import javax.swing.*;
import java.awt.*;
public class Flow {
public static void main(String[] args) {
JFrame jf = new JFrame("FLOWLAYOUT");
jf.setBounds(100,100,800,600);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel jp = new JPanel();
JButton btn1 = new JButton("1");
JButton btn2 = new JButton("2");
JButton btn3 = new JButton("3");
JButton btn4 = new JButton("4");
JButton btn5 = new JButton("5");
JButton btn6 = new JButton("6");
JButton btn7 = new JButton("7");
JButton btn8 = new JButton("8");
JButton btn9 = new JButton("9");
jp.add(btn1);
jp.add(btn2);
jp.add(btn3);
jp.add(btn4);
jp.add(btn5);
jp.add(btn6);
jp.add(btn7);
jp.add(btn8);
jp.add(btn9);
// 想面板添加一個流式布局管理器你,設(shè)置橫間距像素為180,縱間距為50
jp.setLayout(new FlowLayout(FlowLayout.LEADING, 180, 50));
// 設(shè)置背景色
jp.setBackground(Color.GRAY);
jf.add(jp);
jf.setVisible(true);
}
}
運行結(jié)果:
總結(jié)
以上就是關(guān)于 Java 圖形界面工具 Swing 自身提供的幾種布局管理器類型中的其中兩種,邊框布局管理器和流式布局管理器的介紹和示例使用。想要了解更多關(guān)于 Java Swing 其他布局管理器類型的其他內(nèi)容,請關(guān)注W3Cschool以往的文章或者繼續(xù)瀏覽接下來的內(nèi)容。如果本篇文章對您的學習有所幫助,還希望大家能夠?qū)ξ覀兌喽嗟刂С郑?/p>