[轉]Java圖形化介面設計——佈局管理器之BorderLayout
阿新 • • 發佈:2020-12-16
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); //讓窗體居中顯示 } }
程式執行效果: