在我的Java GUI中有4个JTextField
。目标是输入3个文本字段的默认值(例如下面的代码中的.8)并计算该值并将计算显示在第4个文本字段中。然后,用户应该能够更改JTextField
中数字的值,然后再次按下计算按钮以获取新值以重新计算并显示它们。
问题:当编辑JTextfields并按下计算按钮时,它不会使用新数字计算,而是使用旧的初始值计算。
JTextField S = new JTextField();
S.setText(".8");
String Stext = S.getText();
final double Snumber = Double.parseDouble(Stext);
.... *same setup for Rnumber*
.... *same setup for Anumber*
....
JButton btnCalculate_1 = new JButton("Calculate");
btnCalculate_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
int valuec = (int) Math.ceil(((Snumber*Rnumber)/Anumber)/8);
String stringValuec = String.valueOf(valuec);
NewTextField.setText(stringCalc);
}
我查了几篇帖子并尝试过:
How Do I Get User Input from a TextField and Convert it to a Double?
Using JTextField for user input
基础知识。但是,每当尝试将其调整到我的代码时,eclipse都会返回各种错误。
答案 0 :(得分:2)
使用S.getText()
actionPerformed()
方法。
在按下按钮时调用actionperformed块内的代码,其外部的代码不受影响。
因此,一旦运行代码并将值插入文本字段,它就会分配一个值,但是当您更改值并按下计算按钮时它不会改变相同的值
答案 1 :(得分:0)
尝试使用此代码。
class a extends JFrame implements ActionListener
{
JTextField t1,t2,t3;
a()
{
setLayout(null);
t1 = new JTextField();
t2 = new JTextField();
t3 = new JTextField();
JButton B1 = new JButton("Calculate");
t3.setEditable(false);
t1.setBounds(10,10,100,30);
t2.setBounds(10,40,100,30);
t3.setBounds(10,70,100,30);
B1.setBounds(50, 110, 80, 50);
add(t1);
add(t2);
add(t3);
add(B1);
B1.addActionListener(this);
setSize(200,200);
setVisible(true);
}
public static void main(String args[])
{
new a();
}
@Override
public void actionPerformed(ActionEvent e)
{
double Snumber = Double.parseDouble(t1.getText());
double Rnumber = Double.parseDouble(t2.getText());
double Anumber = Snumber+Rnumber;
t3.setText(String.valueOf(Anumber));
}
}