【從零開始學 Java 程式設計】佈局管理器 - BoxLayout
【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。
BoxLayout
BoxLayout 盒子佈局比 FlowLayout 更強大。可以說是 FlowLayout 的加強版,所以在選擇佈局管理器時,可以直接選擇 BoxLayout。
BoxLayout(Container c,int axis)
其中 Container 為你想設定哪一個容器採用 BoxLayout,另外一個 axis 有 BoxLayout.Y_AXIS 和 BoxLayout.X_AXIS。
BoxLayout.Y_AXIS: 垂直排列,由上至下。
BoxLayout.X_AXIS: 水平排列,由左至右。
設定對齊方式
第一張圖,採用 Component.LEFT_ALIGNMENT: 靠左對齊
第二張圖,採用 Component.CENTER_ALIGNMENT: 置中對齊
第三張圖,採用 Component.RIGHT_ALIGNMENT: 靠右對齊
Box 容器
createHorizontalBox : 建立一個水平排列,由左至右的容器
createVerticalBox: 建立一個垂直排列,由上至下的容器
createVerticalBox: 建立一個垂直排列,由上至下的容器
//建立一個水平排列的容器
Box b1=Box.createHorizontalBox();
//建立一個垂直排列的容器
Box b2=Box.createVerticalBox();
完整程式碼
import javax.swing.*;
import java.awt.*;
public class DemoBoxLayout {
public void addComponentsToPane(Container pane) {
//設定採用 BoxLayout
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
addAButton("Button 1", pane);
addAButton("Button 2", pane);
addAButton("Button 3", pane);
addAButton("Long-Named Button 4", pane);
addAButton("5", pane);
}
private void addAButton(String text, Container container) {
JButton button = new JButton(text);
button.setAlignmentX(Component.CENTER_ALIGNMENT);
container.add(button);
}
private DemoBoxLayout() {
JFrame frame = new JFrame("HKT線上教室 - DemoBoxLayout");
// 獲取螢幕解析度
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
// 設定視窗大小佔螢幕四分之一
frame.setSize(dimension.width / 2, dimension.height / 2);
//設定視窗顯示在螢幕畫面中間位置
int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
frame.setLocation(x, y);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉可以關掉程式
//在 Pane 畫面中加入元件
addComponentsToPane(frame.getContentPane());
// frame.pack();
frame.setVisible(true);
}
//最一開始程式進入點
public static void main(String[] args) {
//使用 invokeLater 確保 UI 在排程執行緒內
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new DemoBoxLayout();
}
});
}
}
執行畫面
參考資料
- [Oracle - The Java Tutorials : How to Use BoxLayout](https://docs.oracle.com/javase/tutorial/uiswing/layout/box.html
那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~