java - 希望结果显示在表单上
问题描述
我希望结果显示在表单上。
为什么这段代码不起作用?
package Swing1_1;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Swing2 {
public static void main(String args[])
{
Addition obj=new Addition();
obj.setVisible(true);
}
}
class Addition extends JFrame implements ActionListener
{
JTextField t1,t2;
JLabel lbl;
JButton b1;
public Addition()
{
JTextField t1=new JTextField(20);
JTextField t2=new JTextField(20);
JLabel lbl=new JLabel("Result");
JButton b1=new JButton("OKey");
add(t1);
add(t2);
add(b1);
add(lbl);
setLayout(new FlowLayout());
//setVisible(true);
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b1.addActionListener(this);//
}
public void actionPerformed( ActionEvent ae)
{
int num1,num2,value;
num1=Integer.parseInt("12");
num2=Integer.parseInt("20");
value=num1+num2;
//System.out.println(value +"");
lbl.setText(value +"");
}
}
解决方案
您实现的问题是您将lbl
[1] 变量声明为类中的instance
变量,Addition
并在constructor
您再次将新变量lbl
[2](同名)声明为local
变量并实例化。在actionPerformed
方法中,您重置了lbl
变量的值,但在这里它试图重置lbl
[1] 的值。因此它抛出了一个异常,因为我们不能在没有实例化的情况下将值重置为引用类型变量。所以代码应该遵循这个;
class Addition extends JFrame implements ActionListener {
JTextField t1, t2;
JLabel lbl;
JButton b1;
public Addition() {
JTextField t1 = new JTextField(20);
JTextField t2 = new JTextField(20);
lbl = new JLabel("Result");
JButton b1 = new JButton("OKey");
add(t1);
add(t2);
add(b1);
add(lbl);
setLayout(new FlowLayout());
// setVisible(true);
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b1.addActionListener(this);//
}
public void actionPerformed(ActionEvent ae) {
int num1, num2, value;
num1 = Integer.parseInt("12");
num2 = Integer.parseInt("20");
value = num1 + num2;
// System.out.println(value +"");
lbl.setText(value + "");
}
}
推荐阅读
- spring-boot - 在我们自己的异常中混合@ResponseStatus 并在@ControllerAdvice 中处理其他异常
- maven - 来自 GitHub 包注册表的 mvn 安装包
- laravel - 雄辩的 whereRaw 不使用绑定
- android - Ionic Cordova 在 --target 上运行指向另一个模拟器
- javascript - 当用户没有输入任何数字时,我需要显示一个警告框
- c# - UWP - C# XAML - 如何在 DependencyProperty 中施加约束?
- node.js - req.headres.Authorization 在heroku中没有定义?
- nginx - uWSGI + Nginx(权限被拒绝)+ CentOS
- angular - 如何在 ReactiveForms 中实现多嵌套(通过 *ngFor)formControl 进行验证?
- javascript - 如何从对象数组中获取值数组