public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
//设置窗口风格
} catch (Exception e) { }
//创建顶层容器并添加内容.
JFrame frame = new JFrame("SwingApplication");
SwingApplication app = new SwingApplication();
Component contents = app.createComponents();
frame.getContentPane().add(contents, BorderLayout.CENTER);
//窗口设置结束,开始显示
frame.addWindowListener(new WindowAdapter() {
//匿名类用于注册监听器
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
}
查看运行结果
7.1.9 Swing程序结构简介
Swing的程序设计一般可按照下列流程进行:
1. 引入Swing包
2. 选择"外观和感觉"
3. 设置顶层容器
4. 设置按钮和标签
5. 向容器中添加组件
6. 在组件周围添加边界
7. 进行事件处理
例子7.1说明了Swing中程序设计的结构以及最基本的组件Button和Label的用法。在程序中,我们建立一个Swing风格的窗口,并在其中添加一个按钮,程序中保存一个计数器以计算按钮被点击的次数,并在每一次点击之后用一个Label显示。在这个程序中我们可以看到Swing组件的使用与AWT组件的使用基本方法一致,使用的事件处理机制也完全相同。这些在前面的AWT中已经讲过,不再赘述。
Swing采用了一种MVC的设计范式,即"模型-视图-控制"(Model-View-Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。
Swing外观感觉采用可插入的外观感觉(Pluggable Look and Feel,PL&F)
在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是只有与本机相关的外观。Swing使得程序在一个平台上运行时能够有不同的外观。用户可以选择自己习惯的外观。以下三幅图是在同一个操作系统下得到不同的外观。
Metal风格
Motif风格
Windows风格
7.1.2 Swing的类层次结构
在javax.swing包中,定义了两种类型的组件:顶层容器(JFrame,JApplet,JDialog和JWindow)和轻量级组件。Swing组件都是AWT的Container类的直接子类和间接子类。
java.awt.Component
-java.awt.Container
-java.awt.Window
-java.awt.Frame-javax.swing.JFrame
-javax.Dialog-javax.swing.JDialog
-javax.swing.JWindow
-java.awt.Applet-javax.swing.JApplet
-javax.swing.Box
-javax.swing.Jcomponet
Swing包是JFC(Java Foundation Classes)的一部分,由许多包组成。
(在jdk1.3中,第一、第二和pending包没有了,增加了plaf.multi包,主要功能:给缺省的L&F加上附加的L&F,例如一个MultiButtonUI实例可以同时处理MotifButtonUI和AudioButtonUI.)
swing包是Swing提供的最大包,它包含将近100个类和25个接口,几乎所有的Swing组件都在swing包中,只有JtableHeader和 JtextComponent是例外,它们分别在swing.table和swing.text中。
swing.border包中定义了事件和事件监听器类,与AWT的event包类似。它们都包括事件类和监听器接口。
swing.pending包包含了没有完全实现的Swing组件。
swing.table包中主要包括了表格组建(JTable)的支持类。
swing.tree同样是JTree的支持类。
swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用于显示和编辑文档的包。
7.1.3 Swing组件的多样化
Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件以"J"开头,除了有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。
[1] [2]