App下載

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

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

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

border布局

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

flow運(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>


0 人點(diǎn)贊