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