爲了達到這個目的,我無法通過外部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指出的。並且瞭解並使用數組或集合。如果做得好,它可以使你的代碼更短,更容易調試和維護。 –