实现BorderLayout 布局

package chapter16;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
public class BorderLayoutDemo {
public static boolean RIGHT_TO_LEFT = false;
//自定义方法,将组件添加到作为参数传递进来的容器中
public void addComponentsToPane(Container pane) {
//判断容器 pane 的布局方式是否是 BorderLayout 布局
if (!(pane.getLayout() instanceof BorderLayout)) {
pane.add(new JLabel("容器不使用 BorderLayout 布局!"));
return;
}
//设置组件的自然方向是自右向左
if (RIGHT_TO_LEFT) {
pane.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);
}
//创建并添加第一个按钮
JButton button = new JButton("按钮 1 (PAGE_START)");
pane.add(button, BorderLayout.PAGE_START);
//将按钮组件添加到面板上部
//在 BorderLayout 布局中,中间的组件会显得更大.
button = new JButton("按钮 2 (中间)");
button.setPreferredSize(new Dimension(200, 100));
//设置 button 组件的首选大小
pane.add(button, BorderLayout.CENTER);
//将 button 组件添加到面板中间
button = new JButton("按钮 3 (LINE_START)");
pane.add(button, BorderLayout.LINE_START);
//将按钮组件添加到面板左侧
button = new JButton("具有很长名字的按钮 4 (PAGE_END)");
pane.add(button, BorderLayout.PAGE_END);
//将按钮组件添加到面板底部
button = new JButton("按钮 5 (LINE_END)");
pane.add(button, BorderLayout.LINE_END);
//将按钮组件添加到面板右侧
}
//创建 GUI 界面并显示. 出于线程安全的目的,这个方法应该从线程分发线程调用
private void createAndShowGUI() {
//创建并设置窗体窗口.
JFrame frame = new JFrame("BorderLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置内容面板.
addComponentsToPane(frame.getContentPane());
8
//使用内容面板的默认 BorderLayout 布局.不需要用 setLayout(new BorderLayout());
//显示窗口.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//使用一个合适的程序外观
try {
//使用 windows 程序外观
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
//捕获并处理异常
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
// 关闭粗体字显示
UIManager.put("swing.boldMetal", Boolean.FALSE);
//为事件分发线程预订一个工作:创建并显示本程序的 GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new BorderLayoutDemo().createAndShowGUI();
}
});
}
}

 

你可能感兴趣的:(实现BorderLayout 布局)