为了达到这个目的,我无法通过外部ActionListener类来编写静态双精度值或JTextField。 我正在制作一个高级计算器,为了让事情变得更容易,我正在尝试创建GUI,实现其按钮和其他功能,并且我正在尝试将ActionListeners放在其他类中。在eclipse中,它表示我需要让计算器的静态变量静态,但使它们变为静态,我不能再写入它们,并显示答案。 这是代码我有:Java ActionListener类不写入静态变量
public static JButton num0, num1, num2, num3, num4, num5, num6, num7, num8, num9;
public static double tempNum1;
public static double tempNum2;
public static boolean pointOn = false;
public static int APC = 1;
public GUI(){
GUINumListener numListener = new GUINumListener();
num0.addActionListener(numListener);
num1.addActionListener(numListener);
num2.addActionListener(numListener);
num3.addActionListener(numListener);
num4.addActionListener(numListener);
num5.addActionListener(numListener);
num6.addActionListener(numListener);
num7.addActionListener(numListener);
num8.addActionListener(numListener);
num9.addActionListener(numListener);
}
并在GUINumListener类:
public class GUINumListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals(GUI.num0)){
GUI.tempNum2 *= 10;
}else if (e.getActionCommand().equals(GUI.num1)){
if (GUI.pointOn = false){
GUI.tempNum2 = (GUI.tempNum2 * 10) + 1;
}else{
GUI.tempNum2 = (GUI.tempNum2 * Math.pow(10, GUI.APC) + 1)/Math.pow(10, GUI.APC);
GUI.APC++;
}
GUI.ansField.setText(Double.toString(GUI.tempNum2));
}
}
点击程序中的数不输出它在ansField字段。 帮助! 感谢
不要让他们一成不变的。 Eclipse只是抱怨,因为代码没有编译,并且提出了一个解决方案来编译它。但是编译代码并不能使它正确和清晰。可写入的静态变量是99.9%的次数,是一种设计气味。哦,田野也不应该公开。使它们成为私有的,或者至少是包私有的。 –
我第二次都是由@JBNizet指出的。并且了解并使用数组或集合。如果做得好,它可以使你的代码更短,更容易调试和维护。 –