1. 程式人生 > 實用技巧 >[轉]Java圖形化介面設計——佈局管理器之BorderLayout

[轉]Java圖形化介面設計——佈局管理器之BorderLayout

Java圖形化介面設計——佈局管理器之BorderLayout

覺得有用的話,歡迎一起討論相互學習~

轉載自:
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
本文連結:https://blog.csdn.net/liujun13579/article/details/7772215

邊界佈局管理器把容器的的佈局分為五個位置:CENTER、EAST、WEST、NORTH、SOUTH。依次對應為:上北(NORTH)、下南(SOUTH)、左西(WEST)、右東(EAST),中(CENTER),如下圖所示。

特徵:

l 可以把元件放在這五個位置的任意一個,如果未指定位置,則預設的位置是CENTER。

l 南、北位置控制元件各佔據一行,控制元件寬度將自動佈滿整行。東、西和中間位置佔據一行;若東、西、南、北位置無控制元件,則中間控制元件將自動佈滿整個螢幕。若東、西、南、北位置中無論哪個位置沒有控制元件,則中間位置控制元件將自動佔據沒有控制元件的位置。

l 它是視窗、框架的內容窗格和對話方塊等的預設佈局。

1、 常見的構建函式和方法

例項:


import javax.swing.*;

import java.awt.*;

public class BorderLayoutDemo1 extends JFrame {

    private JPanel innerWindow = new JPanel();


    public BorderLayoutDemo1() {        //建構函式,初始化物件值

        //設定為邊界佈局,元件間橫向、縱向間距均為5畫素

        this.getContentPane().setLayout(new BorderLayout(5, 5));

        this.setFont(new Font("Helvetica", Font.PLAIN, 14));

        this.getContentPane().add("North", new JButton("North"));     //將按鈕新增到視窗中

        this.getContentPane().add("South", new JButton("South"));

        this.getContentPane().add("East", new JButton("East"));

        this.getContentPane().add("West", new JButton("West"));

        this.getContentPane().add("Center", new JButton("Center"));

    }

    public static void main(String args[]) {

        BorderLayoutDemo1 f = new BorderLayoutDemo1();

        f.setTitle("邊界佈局");
        f.setSize(600, 400);//設定窗體初始大小

        f.setVisible(true);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setLocationRelativeTo(null);             //讓窗體居中顯示

    }

}

程式執行結果如下所示:

依次註釋掉東、西、南、北和中間位置新增按鈕的語句,保留其它的的語句體會一下邊框佈局的特點。

如果想要更復雜的佈局可以在東、西、南、北和中間位置新增中間容器,中間容器中再進行佈局,並新增相應的元件,已達到複製補間的效果。

例項二:在中間位置中新增9個按鈕。

import javax.swing.*;

import java.awt.*;

public class BorderLayoutDemo2 extends JFrame {

    JPanel p = new JPanel();

    //同名建構函式
    public BorderLayoutDemo2() {

        this.getContentPane().setLayout(new BorderLayout(5, 5));

        this.setFont(new Font("Helvetica", Font.PLAIN, 14));

        this.getContentPane().add("North", new JButton("North"));

        this.getContentPane().add("South", new JButton("South"));

        this.getContentPane().add("East", new JButton("East"));

        this.getContentPane().add("West", new JButton("West"));

        //設定面板為流式佈局居中顯示,元件橫、縱間距為5個畫素

        p.setLayout(new FlowLayout(1, 5, 5));

        //使用迴圈新增按鈕,注意每次新增的按鈕物件名稱都是b
        //但按鈕每次均是用new新生成的,所有代表不同的按鈕物件。

        for (int i = 1; i < 10; i++) {

            //String.valueOf(i),將數字轉換為字串

            JButton b = new JButton(String.valueOf(i));

            p.add(b);           //將按鈕新增到面板中

        }

        this.getContentPane().add("Center", p);  //將面板新增到中間位置

    }

    public static void main(String args[]) {

        BorderLayoutDemo2 f = new BorderLayoutDemo2();

        f.setSize(400,400);
        f.setTitle("邊界佈局");

        f.setVisible(true);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setLocationRelativeTo(null);             //讓窗體居中顯示

    }

}

程式執行效果: