我们将完成Netbeans 6.5 GUI 布局和设计工作并添加几个按钮和文本字段。这些文本字段用于接收用户输入和显示程序输出。这些按钮用于启动前端的内置功能。我们创建的应用程序是一个非常简单但功能完善的计算器。
有关更全面的Netbeans 6.5 GUI 生成器设计功能指南(包括各种设计功能的视频演示),请参见在Netbeans 6.5IDE 中设计 Swing GUI。
要学完本教程,您需要具备以下软件和资源。
软件或资源 | 要求的版本 |
---|---|
NetBeans IDE | 版本 6.5 |
Java Development Kit (JDK) | 版本 6 或 版本 5 |
第一步是为要开发的应用程序创建 IDE 项目。我们将项目命名为 NumberAddition。
NumberAddition
,然后指定项目位置路径(例如,在主目录中)。
要继续生成界面,我们需要创建一个 Java 容器,以便放置所需的其他 GUI 组件。在此步骤中,我们将使用 JFrame
组件创建一个容器。我们将该容器放在新包中,该包将显示在“源包”节点中。
创建 JFrame 容器
my.numberaddition
。
IDE 将在 NumberAddition
应用程序中创建 NumberAdditionUI
窗体和 NumberAdditionUI
类,然后在 GUI 生成器中打开 NumberAdditionUI
窗体。my.NumberAddition
包将替代缺省包。
接下来,我们将通过组件面板使用 JPanel 填充应用程序前端。然后,添加三个 JLabel、三个 JTextField 和三个 JButton。如果以前没有用过 GUI 生成器,您可能会发现在 NetBeans IDE 中设计 Swing GUI 教程中有关组件放置的信息非常有用。
在拖动并放置完上述组件后,JFrame 应类似于以下屏幕快照。
如果在 IDE 右上角未看到“组件面板”窗口,则选择“窗口”>“组件面板”。
Number Addition
。单击“确定”保存更改并退出该对话框。
在该步骤中,我们将重命名刚添加到 JFrame 中的这些组件的显示文本。
jLabel1
并将文本属性更改为 First Number
。
jLabel2
并将文本更改为 Second Number
。
jLabel3
并将文本更改为 Result
。
jTextField1
中的样例文本。可通过以下方法使显示文本处于可编辑状态:单击文本字段,稍等片刻,然后再次单击文本字段。可能需要将 jTextField1
调整为原始大小。对于 jTextField2
和 jTextField3
,重复此步骤。
jButton1
显示文本重命名为 Clear
。(可以通过右键单击按钮并选择“编辑文本”来编辑按钮的文本。或者,也可以单击按钮,稍等片刻,然后再次单击按钮。)
jButton2
显示文本重命名为 Add
。
jButton3
显示文本重命名为 Exit
。 现在,完成的 GUI 应类似于以下屏幕快照:
在本练习中,我们将为 "Add"、"Clear" 和 "Exit" 按钮添加功能。jTextField1
和 jTextField2
框用于用户输入,jTextField3
用于程序输出;我们要创建的应用程序是一个非常简单的计算器。我们现在就开始吧。
要为这些按钮添加功能,必须为每个按钮指定事件处理程序以响应事件。在本示例中,我们需要了解何时通过鼠标单击或键盘按下了按钮。因此,我们使用 ActionListener 来响应 ActionEvent。
- private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
- //TODO: Add your handling code here:
- }
使 "Clear" 按钮正常工作
- private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
- System.exit(0);
- }
jButton1
)。从弹出式菜单中选择“事件”> "Action" > "actionPerformed"。
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
- jTextField1.setText("");
- jTextField2.setText("");
- jTextField3.setText("");
- }
上面的代码将所有三个 JTextField 中的文本更改为空,实际就是使用空白覆盖现有文本。
使 "Add" 按钮正常工作"Add" 按钮用于执行三个操作:
jTextField1
和 jTextField2
中的用户输入,并将输入类型由字符串转换为浮点。
TextField3
中。jButton2
)。从弹出式菜单中选择“事件”> "Action" > "actionPerformed"
- private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
- // First we define float variables.
- float num1, num2, result;
- // We have to parse the text to a type float.
- num1 = Float.parseFloat(jTextField1.getText());
- num2 = Float.parseFloat(jTextField2.getText());
- // Now we can perform the addition.
- result = num1+num2;
- // We will now pass the value of result to jTextField3.
- // At the same time, we are going to
- // change the value of result from a float to a string.
- jTextField3.setText(String.valueOf(result)); }
程序已创建完毕,我们现在可以生成并运行该程序以查看其运行情况。
练习 4:运行程序在 IDE 中运行程序:
在 IDE 外部运行程序:
NumberAddition/dist
目录。
NumberAddition.jar
文件。 几秒钟后,将会启动应用程序。
注意:如果在双击 JAR 文件时没有启动应用程序,请参见本文以了解在操作系统中设置 JAR 文件关联的相关信息。
也可以通过命令行启动应用程序。
通过命令行启动应用程序:
NumberAddition/dist
目录。
- java -jar NumberAddition.jar
本教程已介绍了如何响应简单的按钮事件。还可以让应用程序响应很多其他事件。IDE 可以帮助您查找 GUI 组件可处理的可用事件列表:
NumberAdditionUI.java
文件。单击“设计”标签以在 GUI 生成器中查看 GUI 布局。
事件处理是如何工作的呢?每次从“事件”菜单中选择事件时,IDE 都会自动创建一个所谓的事件侦听程序,并将其与组件关联。请完成以下步骤以查看事件处理的工作方式。
NumberAdditionUI.java
文件。单击“源”标签以查看 GUI 源代码。
jButton1ActionPerformed()
、jButton2ActionPerformed()
和 jButton3ActionPerformed()
。这些方法称为事件处理程序。
initComponents()
的方法。如果未看到该方法,请查找显示 Generated Code
的行;单击该行旁边的 + 号以展开折叠的 initComponents()
方法。
initComponents()
方法周围的蓝色块。此代码是由 IDE 自动生成的,无法对其进行编辑。
initComponents()
方法。此外,该方法还包含用于初始化 GUI 组件并将其放置在窗体上的代码。在“设计”视图中放置和编辑组件时,将会自动生成和更新该代码。
initComponents()
中,向下滚动至显示以下内容的位置:
- jButton3.setText("Exit");
- jButton3.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton3ActionPerformed(evt);
- }
- });
这是在 GUI 组件中添加事件侦听程序对象的位置;在本示例中,将在 jButton3
中注册 ActionListener。ActionListener 接口具有一个 actionPerformed 方法,该方法采用 ActionEvent 对象(只需调用 jButton3ActionPerformed
事件处理程序即可实现)作为其参数。现在,该按钮将侦听 action 事件。每次按下该按钮时,都会生成 ActionEvent 并将其传递给侦听程序的 actionPerformed 方法,而该方法又会执行在该事件的事件处理程序中提供的代码。
一般来说,要能够进行响应,每个交互式 GUI 组件需要在事件侦听程序中进行注册,并且需要实现事件处理程序。正如您所看到的一样,NetBeans IDE 可处理关联事件侦听程序的工作,因此,您可以集中精力实现应由事件触发的实际业务逻辑。
【编辑推荐】