|
| |
精品推荐 |
 |
|
| |
|
|
|
|
Java图形用户界面设计
|
日期:2007年10月12日 作者: 查看:[大字体
中字体 小字体]
|
不妨先看一个例子:
/** * TestFrame.java * @author Fancy */ import javax.swing.*; import java.awt.event.*;
public class TestFrame extends JFrame {
private int counter = 0;
public TestFrame() { /* 使用匿名类添加一个窗口监听器 */ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("Exit when Closed event"); System.exit(0); //退出应用程序 }
public void windowActivated(WindowEvent e) { setTitle("Test Frame " + counter++); // 改变窗口标题 } });
setResizable(false); // 设置窗口为固定大小 setSize(200, 150); }
public static void main(String[] args) { TestFrame tf = new TestFrame(); tf.show(); }
} 这个例子中,我们设计了一个窗口类(public class TestFrame extends JFrame { ...),并且为这个窗口添加了一个窗口监听器 (addWindowListener(new WindowAdapter() ...)。而我们添加的这个窗口监听器主要监听了两个事件:窗口关闭 (public void windowClosing(WindowEvent e) ...) 和窗口激活 (public void windowActivated(WindowEvent e) ...)。在窗口关闭事件中我们退出了整个应用程序(System.exit(0);),而在窗口激活事件中,我们改变了窗口的标题 (setTitle("Test Frame " + counter++);)。最后,我们在 main 方法中显示了这窗口类的一个实例,运行得到下图所示的结果:
这个程序的运行结果就是一个什么东西都没有加的框架,也就是一个空窗口。那么,你知道显示一个窗口最主要的几句代码吗?不知道没关系,我来告诉你,显示一个窗口只需要做三件事:生成实例(对象) -> 设置大小 -> 显示,相应的,就是下面的三句代码:
JFrame frame = new JFrame("Frame's Title"); frame.setSize(400, 300); frame.show(); 也许你会说:第一句的意思我清楚,第三句的意思我也明白,为什么一定要第二句呢?其实想想也就明白了,叫你画一个没法有大小的矩形你能画出来吗?不能。同样,没有大小的窗口,怎么显示?所以我们需要用 setSize(int width, int height) 方法为其设置大小。我们还有另一种方法:用 JFrame 的 pack() 方法让它自己适配一个大小。pack() 在多数时候是令人满意的,但有时,它也会让你哭笑不得——多试试就知道了。
在 JFrame 中,我们使用 addWindowListener 方法加入一个监听器 WindowListener (addWindowListener(new WindowAdapter() ...) 去监听发生在 JFrame 上的窗口事件。WindowListener 是一个接口,在 java.awt.event 这个包中,但是上例中好象并没有使用 WindowListener,而是使用的 WindowsAdapter 吧,这是怎么回事?
WindowAdapter 是 WindowsListener 接口的一个最简单的实现,也在包 java.awt.event 中。如果我们直接使用 WindowListener 产生一个匿名类,需要实现它的每一个方法 (一共 7 个)。但 WindowAdapter 作为 WindowListener 最简单的实现,已经实现了它的每一个方法为空方法 (即只包含空语句,或者说没有语句的方法)。用 WindowAdapter 就只需要重载可能用到的方法 (上例中只有 2 个) 就行了,而不需要再去实现每一个方法。优点显而易见——减少代码量。
在 JFrame 上发生的窗口事件 (WindowEvent) 包括:
windowActivated(WindowEvent e) 窗口得到焦点时触发 windowClosed(WindowEvent e) 窗口关闭之后触发 windowClosing(WindowEvent e) 窗口关闭时触发 windowDeactivated(WindowEvent e) 窗口失去焦点时触发 windowDeiconified(WindowEvent e)
上一篇:Palm 串行通讯GPS数据读取的实现
下一篇:Java用户界面本地化实例探索
|
| 相关文章: |
|
|
|
| 相关软件: |
|
|
|
|