App下載

關(guān)于Java圖形界面工具Swing的布局方式介紹

猿友 2021-07-22 16:37:55 瀏覽數(shù) (4152)
反饋

在使用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é)果:

border布局

根據(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é)果:

flow運行結(jié)果

總結(jié)

以上就是關(guān)于 Java 圖形界面工具 Swing 自身提供的幾種布局管理器類型中的其中兩種,邊框布局管理器和流式布局管理器的介紹和示例使用。想要了解更多關(guān)于 Java Swing 其他布局管理器類型的其他內(nèi)容,請關(guān)注W3Cschool以往的文章或者繼續(xù)瀏覽接下來的內(nèi)容。如果本篇文章對您的學習有所幫助,還希望大家能夠?qū)ξ覀兌喽嗟刂С郑?/p>


0 人點贊