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")); }