Java SE 6 中包含一个新的 GroupLayout ,从GroupLayout的单词意思来看,它是以Group(组)为单位来管理布局,也就是把多个组件(如:JLable、JButton)按区域划分到不同的Group(组),再根据各个Group(组)相对于水平轴(Horizontal)和垂直轴(Vertical)的排列方式来管理。下面我们针对这样一个界面看看它的用法:
首先划分组:
1、按水平(Horizontal)方向划分:
hpg1 : JLabel 所在组(只有一个组件可以不用分组)
hpg2a : 左边两个JCheckBox平行于水平轴(Horizontal)排列,构成一个ParallelGroup
hpg2b : 右边两个JChecKBox平行于水平轴(Horizontal)排列,构成一个ParallelGroup
hpg2H : hpg2a 和 hpg2b 两个组沿着水平轴(Horizontal)顺序排列,构成一个SequentialGroup
hpg2 : JTextBox和组hpg2H 平行于水平轴(Horizontal)排列,构成一个ParallelGroup
hpg3 : 两个JTextBox平行于水平轴(Horizontal)排列,构成一个ParallelGroup
另外JLabel 、hpg2、hpg3 沿着水平轴(Horizontal)顺序排列,构成一个SequentialGroup
2、按垂直(Vertical)方向划分:
vpg1 : JLabel、JTextBox 、JButton(Find)平行于垂直轴(Vertical)排列,构成一个ParallelGroup
vpg2 : 上边两个JChecKBox、JButton(Cancel)平行于垂直轴(Vertical)排列,构成一个ParallelGroup
vpg3 : 下边两个JChecKBox平行于垂直轴(Vertical)排列,构成一个ParallelGroup
另外vpg1、vpg2、vpg3 三个组沿着垂直轴(Vertical)顺序排列,构成一个SequentialGroup
3、编码:水平和垂直两个方向我们都必须设定,实现方法详见程序。
addComponent:向Group里添加组件,如JLabel、JTextBox
addGroup : 向Group里添加组
/// GLayout.java
package lee;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GLayout extends JFrame
{
public GLayout()
{
super("Find");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//String laf = UIManager.getCrossPlatformLookAndFeelClassName();
String laf = UIManager.getSystemLookAndFeelClassName();
try {
UIManager.setLookAndFeel(laf);
} catch (UnsupportedLookAndFeelException exc) {
System.err.println("Warning: UnsupportedLookAndFeel: " + laf);
} catch (Exception exc) {
System.err.println("Error loading " + laf + ": " + exc);
}
JLabel label1 = new JLabel("Find What:");
JTextField textField1 = new JTextField();
JCheckBox caseCheckBox = new JCheckBox("Match Case");
JCheckBox wholeCheckBox = new JCheckBox("Whole Words");
JCheckBox wrapCheckBox = new JCheckBox("Warp Around");
JCheckBox backCheckBox = new JCheckBox("Search Backwards");
JButton findButton = new JButton("Find");
JButton cancelButton = new JButton("Cancel");
Container c = getContentPane();
GroupLayout layout = new GroupLayout(c);
c.setLayout(layout);
//自动设定组件、组之间的间隙
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
//LEADING -- 左对齐 BASELINE -- 底部对齐 CENTER -- 中心对齐
GroupLayout.ParallelGroup hpg2a = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hpg2a.addComponent(caseCheckBox);
hpg2a.addComponent(wholeCheckBox);
GroupLayout.ParallelGroup hpg2b = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hpg2b.addComponent(wrapCheckBox);
hpg2b.addComponent(backCheckBox);
GroupLayout.SequentialGroup hpg2H = layout.createSequentialGroup();
hpg2H.addGroup(hpg2a).addGroup(hpg2b);
GroupLayout.ParallelGroup hpg2 = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hpg2.addComponent(textField1);
hpg2.addGroup(hpg2H);
GroupLayout.ParallelGroup hpg3 = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hpg3.addComponent(findButton);
hpg3.addComponent(cancelButton);
//水平
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(label1).addGroup(hpg2).addGroup(hpg3));
//设定两个Button在水平方向一样宽
layout.linkSize(SwingConstants.HORIZONTAL,new Component[] { findButton, cancelButton });
//layout.linkSize(SwingConstants.HORIZONTAL,new Component[] { caseCheckBox, wholeCheckBox, wrapCheckBox, backCheckBox});
GroupLayout.ParallelGroup vpg1 = layout.createParallelGroup(GroupLayout.Alignment.BASELINE);
vpg1.addComponent(label1);
vpg1.addComponent(textField1);
vpg1.addComponent(findButton);
GroupLayout.ParallelGroup vpg2 = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
vpg2.addComponent(caseCheckBox);
vpg2.addComponent(wrapCheckBox);
vpg2.addComponent(cancelButton);
GroupLayout.ParallelGroup vpg3 = layout.createParallelGroup(GroupLayout.Alignment.BASELINE);
vpg3.addComponent(wholeCheckBox);
vpg3.addComponent(backCheckBox);
//垂直
layout.setVerticalGroup(layout.createSequentialGroup()
.addGroup(vpg1).addGroup(vpg2).addGroup(vpg3));
setLocation(200,200);
pack();
setVisible(true);
}
public static void main(String[] args)
{
new GLayout();
}
}
相关推荐
GroupLayout 是 Java Swing 提供的一种布局管理器,用于设计复杂的图形用户界面(GUI)。 与其他布局管理器相比,GroupLayout 提供了更灵活和功能强大的布局方式。它允许开发者以逻辑组的形式来组织和控制组件的...
6. **API**: `swt-grouplayout.jar`包含了一系列用于创建和管理GroupLayout的类和方法,例如`GroupLayout`, `Group`, `ParallelGroup`, `SequentialGroup`, `GroupLayout.Alignment`, `GroupLayout....
GroupLayout是Java Swing中的一种布局管理器,用于管理Swing组件的布局。它将组件按层次分组,以决定它们在容器中的位置。GroupLayout主要供生成器使用,生成并行组和串行组。 GroupLayout的组 GroupLayout支持两...
标题“swt-grouplayout-pgroup”暗示了我们正在探讨的是一个与SWT(Standard Widget Toolkit)相关的布局管理器,特别是与`Group`控件和`PGroup`类有关的内容。SWT是Eclipse项目的一个组成部分,它提供了一套用于...
### JAVA设计模式在JDK中的应用 #### 一、引言 在软件开发过程中,设计模式作为一套被广泛接受的解决方案,能够帮助开发者解决常见的设计问题。Java作为一门流行的编程语言,其标准库(JDK)中巧妙地融入了多种设计...
1. **布局管理器**:Swing 提供了多种布局管理器,如 FlowLayout、GridLayout、BorderLayout、BoxLayout 和 GroupLayout,它们帮助你组织组件在窗口中的位置和大小。正确使用布局管理器是创建整洁界面的关键。 2. *...
Java SWT(Standard Widget Toolkit)是Java编程环境中用于创建桌面应用程序的一种库,它是Eclipse基金会的一部分。SWT提供了与操作系统原生界面元素直接交互的能力,使得Java应用能够拥有更接近本地应用的外观和...
Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了...通过深入研究,开发者不仅可以掌握Java Swing的基本用法,还能提升在UI设计和用户体验方面的技巧。
Java图形用户界面(GUI)设计是Java编程中的一个重要部分,特别是在开发桌面应用程序时。本练习主要关注GUI的设计和布局管理,以及如何创建一个显示日历的窗口。在Java中,我们通常使用Java Swing库来创建GUI组件,...
在Java编程中,`GroupLayout`是一个强大的布局管理器,用于组织Swing组件在容器中的排列方式。这个布局管理器允许开发者创建复杂的、响应式的用户界面。然而,如果不熟悉其工作原理,`GroupLayout`的设计可能会变得...
- javax.swing.GroupLayout.Group#addComponent(),添加组件到分组。 c) 工厂方法模式(FactoryMethod) 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。JDK中的例子有: - java.lang...
在这个源代码中,开发者可能已经实现了自定义的日期选择控件,以提供更友好的用户体验或更丰富的功能。在Java Swing或JavaFX中,有内置的日期选择组件,如`JCalendar`和`DatePicker`,但自定义控件通常能更好地满足...
6. **文件流处理**:下载的数据需要写入本地文件系统,因此需要熟悉`java.io`包中的文件流类,如`FileInputStream`和`FileOutputStream`,以进行读写操作。为了确保数据完整性,可能需要使用缓冲区和校验和。 7. **...
学习如何布局组件,理解和应用不同的布局管理器(如 FlowLayout、GridLayout、BorderLayout 和 GroupLayout)是提升用户体验的关键。 2. **多线程技术**:即时通讯软件通常涉及到多个并发执行的任务,例如接收消息...
在JavaSwing编程中,开发者可以创建丰富的桌面应用程序,包括按钮、文本框、菜单等组件,以及布局管理器来组织这些组件。本项目"JavaSwing编程demo"是一个基于Swing的实践应用,旨在帮助初学者了解和掌握Swing的基本...
Java Swing 是Java GUI(图形用户界面)开发的重要库,它基于Java AWT(Abstract Window Toolkit)并提供了更丰富、更现代的组件和功能。在"jswing2"这个主题下,我们可以深入探讨Java Swing的各个方面,包括其核心...
在Java Swing中,有多种内置的布局管理器,包括 FlowLayout、GridLayout、BorderLayout、CardLayout 和 GroupLayout。每个布局管理器都有其特定的排列规则: 1. FlowLayout:按照从左到右,然后从上到下的顺序排列...
本资源集合了《Java界面编程》一书中的初级、中级和高级实例源代码,覆盖了100个不同的界面设计案例,对于学习和提升Java GUI(图形用户界面)编程技能具有极大的帮助。 1. **Swing库的使用**:Java Swing是Java ...
使用Java Swing的GroupLayout进行界面布局,确保用户界面的直观性和易用性。 3.3 主要工具包 关键的Java库包括:java.applet、java.awt、java.io、java.util、javax.imageio和javax.swing,它们为程序提供了图形用户...
Swing是Java标准版(Java SE)的一部分,提供了一套丰富的用户界面组件,用于构建功能丰富的图形用户界面(GUI)。这个系统充分利用了Swing的强大功能,提供了直观且友好的操作界面,使得学生信息的录入、查询、修改...