向导名 MDIApplication Application JFrame JInternalFrame OkCancelDialog JPanel JDialog JApplet BeanForm Panel Applet Frame Dialog 。
说明
多文档界面应用程序 普通应用程序 Swing中的主窗体 Swing中的内部窗体 确定取消对话框 Swing中的面板 Swing中的对话框 Swing中的Applet
由任意JavaBean构成的窗体 AWT中的面板 AWT中的Applet AWT中的窗体 AWT中的对话框
图18.13 新建 Matisse Form对话框第一页
在图18.14的模板列表中,我们选中JApplet。在Package(包)中输入applets或者其它的包名,如果此包不存在,Eclipse会自动创建它。Name中输入类名,取值为MatisseJApplet,最后,点击对话框的Finish按钮完成向导。 此时,我们可以看到在源代码目录下,多出了两个文件:MatisseJApplet.java和MatisseJApplet.form,还在Referenced Libraries里面多了两个jar文件:swing-layout-1.0.3.jar(Swing布局)和AbsoluteLayout.jar(绝对布局)。此时整个设计器界面如图18.15所示。在图中,1处为Outline(大纲)视图,列出了图形界面的结构视图;2处为设计器面板,设计器的顶部为功能按钮,包括设计模式,连接模式,预览以及和位置摆放相关的按钮,中部为可以拖动改变位置和大小,双击修改组件文本的设计区,底部的Source/Design为代码和设计模式切换便签;3处为Matisse Palette视图,即组件工具箱,包括了SwingContainers(Swing容器),SwingMenus(Swing菜单),SwingWindows(Swing窗口),SwingControls(Swing控件),AWT,Beans和Custom(自定义)的各种图形界
31
刘长炯著
面组件;4处为Properties(属性)视图,列出了大纲视图中选中的组件的属性,可以编辑属性和事件等。 在这个Applet中要做的练习相对比较简单,就是提示用户输入两个数字,并在点击计算按钮后,弹出对话框告诉用户输入的两个值的乘积。 首先,在Matisse Palette视图中展开目录SwingControls,单击选中组件Label,然后
图18.14 新建JApplet设计窗体类
32
刘长炯著
图 18.15 MyEclipse Swing/Matisse 透视图
将鼠标指针移动到画布(带有彩色边框的区域)上的合适位置,再次点击左键将组件放下。如果中途想取消此次拖放,点击鼠标右键即可。此过程如图18.16所示。
图18.16 向设计面板添加组件
组件一旦放到了设计面板上后,鼠标单击即可选中,然后可以通过鼠标选中组件中央拖动来更改组件的位置。而如果要改变组件的大小,则可以先将鼠标指针移到组件四周的八个控制点之一,然后根据方向箭头的提示进行拖动,即可完成调节。此操作如图18.17左侧图所示。现在我们需要把它放置到中间靠上的位置。那么设计区本身的大小能否调节呢?当然是可以的,当鼠标移到蓝色边框的右侧或者下侧边框附近时,指针形状改变为调节大小时,即可拖动改变设计区大小;也可以鼠标双击此边框,在弹出的对话框中输入边框大小数值。参考图18.17右侧图。
33
刘长炯著
图18.17 更改位置和组件大小
很多组件的文本内容,例如标签,文本区等,可以通过双击显示的文本进入文本快速编辑模式,光标以文字提示的形势显示(I型指针),例如图18.18左侧示。而按钮,文本框等带有Action事件的控件,则不可如此(按钮双击后会自动加入事件处理的代码,生成ActionListener),按钮需要慢速双击(先左键单击一下文本,然后间隔约一秒后再点击一次),才可切换到文本编辑模式(当然前面提到的标签等文字显示控件也可以慢速双击进入文本编辑模式),如图18.18右侧所示。还可以在正在设计的组件上点击右键,选择菜单Edit Text也可开始编辑文本的过程,笔者发现有时候这种方式更简便,不易出错。此时可以修改标签,要完成修改,可以按下回车键,或者点击修改框之外的地方即可。那么现在需要读者拖放三个标签,两个文本框(TextField),以及一个按钮(Button),并拖动位置,然后修改其标签为图18.19所示。
图 18.18 文本快速编辑模式
此时如果我们点击Source标签切换到源代码视图,会看到下面的一段内容: //GEN-BEGIN:variables
// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2;
// End of variables declaration//GEN-END:variables
图18.19 Applet的界面设计
这说明默认生成的代码,变量名是很不规则的,都是以数字后缀为区分的。虽然短期看这样不算什么,但是谁能在没有界面设计器和设计文档时说出jTextField1,jTextField2,jTextFieldn...都是做什么用的?代码一定要讲究可读性和可维护性,这样才能开发出高质量的项目来。当然,注意这段代码前后的注释,说明了这段代码是自动生成的,不能手工修改。
34
刘长炯著
那怎么办呢?第一种办法,是在界面设计器上的组件上点击右键,选择菜单Change Variable Name...,接着会弹出Rename对话框,在New Name右侧文本框中输入新的变量值,随后点击OK按钮关闭对话框即可。第二种办法,比较简便,是在Outline视图中,慢速双击节点(同样的某些组件双击会生成事件代码),则节点会变为可编辑状态,显示变量名的修改框,随后在框中输入新的变量名,之后按下回车键即可,不可点击空白处完成修改,否则修改不能生效。这两种修改方法,参考图18.20。至于变量到底如何命名,则看各个公司的习惯而定。一般来说主要是有明确的意义即可,例如jLabelHint,jButtonOk,jTextFieldNumber1等等均可。在这里,我们将结果修改为图18.20下册所示的命名即可。
图18.20 修改变量名
此后,需要进行的内容,就是给按钮加入事件处理代码,当此按钮点击后会触发执行一个方法,这就需要介绍Properties视图了。当我们选中一个组件后,Properties视图中显示了四种类别的属性,分别是:Properties,Binding,Events和Code。Properties 列出了组件中可以被修改的属性,包括可影响外观显示的和不影响外观显示的内容。通常一个属性有两种方式可以进行编辑:第一种方式是直接点击属性名右侧的文本输入框,这样适合于进行快速编辑;第二种方式是点击属性名最右侧的带有三个...的按钮,在弹出的高级属性编辑器中进行修改。这两种方式的修改,参考图18.21。如果要恢复原始的默认属性值,则可以在属性名上点击右键,选择菜单项Restore Default Value即可。至于第二栏Binding,则属于Swing最新加入的技术,名为变量绑定,发现在MyEclipse中这个功能基本上不可用,所以就不再赘述了。第四栏Code,则是和变量名以及代码生成相关的代码,让开发人员可以把特定的代码插入组件的生成代码中,这个读者可以自己尝试,不再赘述。
35
刘长炯著