gpt4 book ai didi

java - 在 JTextField 中保持变量最新 - Java

转载 作者:行者123 更新时间:2023-12-02 12:45:04 28 4
gpt4 key购买 nike

所以我对java很陌生,我正在尝试使用按钮来创建一个GUI计算器。当用户按下按钮时,我希望它将他们按下的数字添加到第一个数字上,这样它的工作原理如下: GUI Example

我遇到的问题是,当事件处理程序将数字添加到总数中时,JTextField 不会更新。我的代码如下:

    package App;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class gui_calc extends JFrame
{
private Button button0;
private Button button1;
private Button button2;
private Button button3;
private Button button4;
private Button button5;
private Button button6;
private Button button7;
private Button button8;
private Button button9;
private Button buttonNull;
private Button go;
private String num1_sum = "0";
private String num2_sum = "0";
private JTextField sum;


public gui_calc()
{

super("Title");

Label label1 = new Label("Enter First Number");

JPanel numPad1 = new JPanel();
button0 = new Button("0");
button1 = new Button("1");
button2 = new Button("2");
button3 = new Button("3");
button4 = new Button("4");
button5 = new Button("5");
button6 = new Button("6");
button7 = new Button("7");
button8 = new Button("8");
button9 = new Button("9");
buttonNull = new Button("-");
go = new Button("Next");
numPad1.setLayout(new GridLayout(4,3));
numPad1.add(button1);
numPad1.add(button2);
numPad1.add(button3);
numPad1.add(button4);
numPad1.add(button5);
numPad1.add(button6);
numPad1.add(button7);
numPad1.add(button8);
numPad1.add(button9);
numPad1.add(buttonNull);
numPad1.add(button0);
numPad1.add(go);


eventHandler handler = new eventHandler();
button1.addActionListener(handler);

add(numPad1);
// Where the number total is displayed
sum = new JTextField(num1_sum);
sum.setColumns(10);
add(sum);




}



private class eventHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Event");

if (e.getSource()==button0)
{
num1_sum = num1_sum + "0";
}

else if (e.getSource()==button1)
{
num1_sum = num1_sum + "1";
// Creating the total and then printing to console so I know everything works as I // want it to
System.out.println(num1_sum);
}

else if (e.getSource()==button2)
{
num1_sum = num1_sum + "2";

}

else if (e.getSource()==button3)
{
num1_sum = num1_sum + "3";
}

else if (e.getSource()==button4)
{
num1_sum = num1_sum + "4";
}

}
}
}

我使用字符串作为数字,因为显然如果用户用整数按下 1 和 4,那么在添加它们时我会得到 5。当我进行计算时,我将解析它们 Integer。

用户按下“下一步”后,应用程序将转到第二个 JPanel,他们以相同的方式输入第二个数字,然后我希望再次按下“下一步”后显示结果。

我还没有到达这个阶段,因为在测试中我发现按下按钮时 JTextField 不会更新,但是当我混合数字 1 按钮时,控制台输出 01、011、0111 等。我已经目前只在按钮 1 上有一个监听器,因为我想让一个按钮在执行其余操作之前工作。

我知道这段代码可能很糟糕,并且可以轻松地更连贯地完成它,但我对 java 仍然很陌生。感谢您的帮助

最佳答案

仅启用一个按钮事件时,您只能看到适用于一个按钮的结果。看起来代码已经接近工作状态,但您需要处理前导零,因此,如果您按一个数字并且当前 num1_sum 为“0”,只需将 num1_sum 设置为新值即可。

然后调用 jtextfields setText 方法 sum.setText(num1_sum);

关于java - 在 JTextField 中保持变量最新 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com