yan*_*nko 0 java cpu-cycles while-loop
在Swing应用程序中,只有在用户输入正确答案后,才能继续使用该方法.正确的答案存储在一个字符串中,用户答案由另一个字符串的监听器设置.所以,代码是
while (!correctAnswer.equals(currentAnswer)) {
// wait for user to click the button with the correct answer typed into the textfield
}
// and then continue
Run Code Online (Sandbox Code Playgroud)
这种方法一切都很好还是你会以某种方式重构它?它不会对CPU造成额外的惩罚吗?这是一个有点类似的问题.
正如其他人所建议的那样,你需要使用为按钮分配一个监听器,当按下按钮时将调用该按钮.
这是一个不完整的示例,说明如何使用ActionListener和实现actionPerformed按下按钮时调用的方法:
...
final JTextField textField = new JTextField();
final JButton okButton = new JButton("OK");
okButton.addActionListner(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if ("some text".equals(textField.getText()))
System.out.println("Yes, text matches.");
else
System.out.println("No, text does not match.");
}
});
...
Run Code Online (Sandbox Code Playgroud)
您可能只想ActionListener在按钮和文本字段所在的类中实现,因此您不需要将这两个对象声明为final.(我只是使用匿名内部类来保持示例简短.)
有关更多信息,您可能需要查看如何从Java教程编写动作侦听器.
此外,有关事件如何在Java中工作的一般信息,教程:从Java教程编写事件监听器可能很有用.
编辑:改变中的表达式if语句从textField.getText().equals("some text")到"some text".equals(textField.getText()),以防止NullPointerException如果textField是null,每建议从闪亮先生和新的评论.
你是UI编程新手吗?我问的原因是你的答案是基于程序化的编码风格,而不是用户界面的.它往往是事件驱动的.
在这种情况下,解决方案非常简单:向提交按钮添加一个事件监听器(ActionListener)并在那里检查结果.如果可以,继续.如果没有,请说出来,让他们再试一次.
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |