我花了數小時搜索,無法弄清楚如何解決此問題。也許我只是完全關閉了,但是我一直收到錯誤「不能引用在不同方法中定義的內部類中的非最終變量userInput」。如果有人可以幫我弄清楚爲什麼會發生這種情況,或者如何解決這個問題,這將不勝感激。使用JTextField時,無法引用內部類錯誤中的非最終變量
我得到2個編譯錯誤: 可以不是指一個非最終變量userInput在不同的方法中定義的內部類內部
和
無法指非最終變量inputField內側的內類以不同的方法定義
編輯:一些澄清,我想保持我的userInput變量不是最終的。
這裏是我的代碼,也許有人可以看到我做錯了,我省略了一切無關與此錯誤代碼:
//Import libraries
...
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
...
public class TextGame {
public static void main(String[] args) throws FileNotFoundException {
...
String userInput = "Input";
...
// Create the window
JFrame gameWindow = new JFrame("Game");
gameWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameWindow.setVisible(true);
// Centre the window
gameWindow.setLocationRelativeTo(null);
...
// Add input box to window
JTextField inputField = new JTextField();
inputField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
userInput = inputField.getText(); ****Here is where the error occurs***
}
});
gameWindow.add(inputField, BorderLayout.SOUTH);
// Size the window to what it contains
gameWindow.pack();
...
}
}
'userInput'是'main'的局部變量。它必須是一個實例或靜態(類)成員,然後Java才能讓您從「main」的上下文中的任何位置對其進行修改。在這種情況下,您可以將其設置爲'TextGame'上的字段(靜態或實例,具體取決於您是否打算使用該類的實例)。 – technomage