带有文本字段的java GUI,用于使用Swing进行输入
实际上我是一个初学者,所以我试着用Swing创建GUI,用户在两个字段中填写两个输入数字,所以有一个新的文本字段,我想在其中添加两个输入值
我想将两个文本字段的整数相加,并将两个值相加,并显示在另一个文本字段中。如何将JTextField
整数值提取到另一个JTextField
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI
{
public JFrame f;
public JPanel p;
public JLabel l1,l2;
public JButton b1;
public JButton b2;
public JTextField t1;
public JTextField t2;
public JTextField t3;
public GUI()
{
f=new JFrame("hello world application");
p=new JPanel(true);
l1=new JLabel("enter first number");
t1=new JTextField(30);
l2=new JLabel("\n enter the second number");
t2=new JTextField(30);
t3=new JTextField(30);
b1=new JButton("check here");
b2=new JButton("clear all");
//b1.addActionCommand1("checking....");
//b2.addActionCommand2("clearing all input's ....");
}
public void launch()
{
f.setSize(400,500);
p.add(l1);
p.add(t1);
p.add(l2);
p.add(t2);
p.add(t3);
p.add(b1);
p.add(b2);
f.pack();
f.add(p);
//l.setFont(Times Roman);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.setSize(400,500);
p.setForeground(Color.red);
p.setBackground(Color.green);
f.setLayout(new BorderLayout());
b1.addActionListener(new Button1handler(t1,t2,t3));
b2.addActionListener(new Button2handler());
f.setVisible(true);
}
public static void main(String a[])
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
GUI br=new GUI();
br.launch();
}
});
}
}
class Button1handler implements ActionListener
{
private JTextField t1;
private JTextField t2;
private JTextField t3;
public Button1handler(JTextField t1, JTextField t2, JTextField t3)
{
this.t1 = t1;
this.t2 = t2;
this.t3 = t3;
}
public void actionPerformed(ActionEvent e)
{
System.out.println("action occurred for checking");
String firstnumber=t1.getText();
String secondnumber=t2.getText();
int num1=Integer.parseInt(firstnumber);
int num2=Integer.parseInt(secondnumber);
int sum=num1+num2;
String str=Integer.toString(sum);
String sum2=t3.setText(str);
JOptionPane.showMessageDialog( null, "The sum is " + sum,"Sum of Two Integers", JOptionPane.PLAIN_MESSAGE );
}
}
class Button2handler implements ActionListener
{
public void actionPerformed(ActionEvent r)
{
System.out.println("clearing all");
}
}
在这段编辑过的代码中,我可以在消息对话框中检索和值。问题是我可以在第三个JtextField中获得特定的字符串。这一行显示错误: //错误:不兼容的类型 字符串sum2=t3。setText(str); 必需:字符串 发现:空虚 1错误:(
# 1 楼答案
如果没有运行代码,你会遇到问题
因为
JTextField
没有setText(int)
方法。相反,您需要将该值转换为String
您可以使用
Integer.toString(total)
,但例如,使用NumberFormat.getNumberInstance().format(total))
可能会获得更好的结果更新
你的“另一个”问题是
Button1handler
扩展了GUI
,这让我一直在绕圈子这意味着,当它访问
t1
和t2
字段时,它得到的是空值,因为这些字段与屏幕上的字段不同如果
ActionListener
位于外部文件/类中,则需要为该类提供上下文,例如然后你需要创建一个动作处理程序的新实例,比如
这为操作处理程序提供了对用户在屏幕上操作的实际字段的引用
您可能对Nested Classes感兴趣,它为您提供了egt的一些额外特性(必须传递引用),但在进入它之前,您应该非常熟悉对象的上下文;)