我想创建一个小程序,在这个程序中,你必须猜测单词,同时你会看到一个匹配的字谜。我的代码是这样的。
JFrame frame = generateJFrame(BACKGROUND, FOREGROUND);
JLabel display = generateDisplay(BACKGROUND, FOREGROUND);
Pair now = woerter.shuffle();
display.setText(now.getAnagram());
JTextField input = generateInputBox(BACKGROUND, FOREGROUND);
ActionListener action = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
nextWord(now, woerter, display, input);
}
};
input.addActionListener(action);
[...]
private static void nextWord(Pair now, Woerter woerter, JLabel display, JTextField input) {
if (now.getRealWord().equalsIgnoreCase(input.getText())) {
now = woerter.shuffle();
display.setText(now.getAnagram());
input.setText("");
}
}
现在当我执行它的时候,它第一次工作(当你输入正确的单词并按下回车键,一个新的字谜就会显示出来,并且输入框会被清除),但是之后它就会中断,回车键也没有任何作用了。 我到底做错了什么?任何帮助都将是感激的。
Pair now = woerter.shuffle();
你将 "now "定义为一个局部变量。
now = woerter.shuffle();
但你也在你的 nextWord(…)
方法,这表明你也将其定义为静态变量。
不要两次定义变量。把局部变量去掉。
//Pair now = woerter.shuffle();
now = woerter.shuffle();
另外,把方法和变量定义为静态,说明设计得不好。你的nextWor()方法不应该是静态的,因此 "now "变量也不需要是静态的。
请阅读Swing教程中关于 如何使用文本字段. 该 TextDemo
代码将告诉你如何更好地组织你的代码,以便文本字段的ActionListener可以访问文本字段和类中的其他数据。
所以下载工作演示代码,并修改它以满足你的要求。