|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。
一切Swing组件都是JavaBeans组件。它们有一系列的setter和getter办法,这些办法的相似于voidsetXXX(范例名)和TypegetXXX()。关于这些办法没有甚么出格的地方,而且正如所预期的,它们遵守JavaBeans的属人命名标准。我们明天要会商的是JavaBeans组件的一个方面,即一对监听器办法addXXXListener(XXXListenername)和removeXXXListener(XXXListenername)。XXListener在这里指的是一个监听器对象,它扩大了EventListener接口,期待与监听器联系关系的组件中的各类事务产生。当事务产生时,一切注册的监听器城市失掉事务的关照(没有特定的按次)。经由过程把戏般的一个小反射(reflection)和一个新的java.beans.EventHandler类,您能够将一个监听器附加到一个bean上,而无需间接完成这个监听器接口大概创立那些烦人的小匿名外部类。
之前的办法
在深切到利用新的EventHandler类的细节之前,让我们回忆一下不利用这个类时是怎样举行事情的。我们举一个对Swing框架中的按钮选择做出呼应的复杂例子。选择一个按钮天生一个ActionEvent。要对这个事务做出呼应,必要将ActionListener附加到这个按钮上,如清单1所示:
清单1.监听尺度按钮选择
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassButtonSelectionextendsJFrame{
publicButtonSelection(){
super("Selection");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JButtonbutton=newJButton("PickMe");
ContainercontentPane=getContentPane();
contentPane.add(button,BorderLayout.CENTER);
button.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
System.out.println("Hello,World!");
}
}
);
}
publicstaticvoidmain(Stringargs[]){
JFrameframe=newButtonSelection();
frame.setSize(200,100);
frame.show();
}
}
这里没有任何奇妙的地方,您大概已熟习这类代码了。这里,ActionListener完成是合时界说的,它界说为一个匿名外部类,并间接附加到按钮上。在选择这个按钮时,字符串Hello,World!就打印到把持台中。与程序联系关系的屏幕如所示:
.带ActionListener的按钮选择
在JavaBeans标准中,没有请求您创立匿名外部类举行事务监听。IDE工具经常接纳这类举动:您说要一个监听器,它就天生一个stub,然后您填进细节。完成一样事情的其他体例包含在挪用类中供应指定的完成大概完成您本人的接口。
界说了每个完成类后,就会创立一个独自的.class文件。以是,在后面的ButtonSelection程序中,您会看到编译器天生两个.class文件:ButtonSelection.class和ButtonSelection$1.class。$1是Sun编译器定名匿名外部类的体例,计数跟着每个类增添。其他编译器大概有分歧的定名体例。
<p>
轮性能微软曾做过一个例子,就是同一个项目用java和.net网页编程来作,结果开发周期,.net网页编程是java的一半,性能java是.net网页编程的十分之一,代码量java是.net网页编程的三倍。呵呵,这说明了什么,.net网页编程的全方位比java好。但是有的人说.net网页编程不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net网页编程很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net网页编程,只是推出了跨语言的.net网页编程, |
|