Swing常用布局管理器对比介绍

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"));
   }
发表评论0条 】
网友评论(共?条评论)..
Swing常用布局管理器对比介绍