2012-02-15 22:33:59|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:Java, Swing, 界面设计|来源:唯设编程网
布局管理器是Swing编程的一大难点,许多初学者在进行Swing图形编程时都会遇到各种问题,但是,Swing通过布局管理器可以实现各种复杂的效果,本文通过实例,让读者对Swing的布局管理器有比较全面的理解,从而可以根据实际需要选择合适的布局方式。
当选择使用JPanel和顶层容器的ContentPane时,都需要根据实际情况选用合理的布局模式。JPanel缺省是初始化一个FlowLayout,而ContentPane缺省是初始化一个BorderLayout。
下面将分别对:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout6中常用的布局管理器进行说明。
代码说明
每一个布局管理器都会有一个代码演示,这些文件均具有相同的结构,主要有三个方法组成:入口main方法、创建实例窗体的方法、添加控件到容器的方法,下面是一个具体的实例:
package Test;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class LayoutTest {
//添加控件到容器
public static void addComponentsToPane(Container pane) {
pane.setLayout(new FlowLayout());
pane.add(new JButton("Button 1"));
pane.add(new JButton("Button 2"));
pane.add(new JButton("Button 3"));
pane.add(new JButton("Long-Named Button 4"));
pane.add(new JButton("5"));
}
//创建实例窗体
private static void createAndShowGUI() {
// Create and set up the window.
JFrame frame = new JFrame("FlowLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set up the content pane.
addComponentsToPane(frame.getContentPane());
// Display the window.
frame.pack();
frame.setVisible(true);
}
//程序入口
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
由于后面的所有代码均具有相同的结构,所以只对addComponentsToPane进行说明。
1、FlowLayout:流式布局模式
FlowLayout是最简单的布局管理器。它按照和页面上排列单词的类似方式来安排组件----从左到右,直至没有多余的空间,然后转到下一行。
效果:

添加控件到容器的方法:
public static void addComponentsToPane(Container pane) {
pane.setLayout(new FlowLayout());
pane.add(new JButton("Button 1"));
pane.add(new JButton("Button 2"));
pane.add(new JButton("Button 3"));
pane.add(new JButton("Long-Named Button 4"));
pane.add(new JButton("5"));
}