我有一个困境。这可能听起来很愚蠢,但我不知道该怎么做。 我有一个密码类和一个主屏幕。我的主屏幕有一个按钮,按下时弹出密码类。这是从我的主类上的actionlistener调用passwordClass。
public PasswordClass login(){
pressMe.setVisible(true);
String player="?";
final String playerT = player;
boolean nameCorrect = false;
final PasswordClass hold = new PasswordClass(null);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);
PasswordClass.createAndShowGUI();
}
});
return hold;
}
返回声明并非与此相关的任何内容我从未使用它,但我将其用于测试目的。在我的密码类中,我有一个布尔值,告诉我用户输入是否与正确的登录信息匹配。我称之为工作我运行密码类,我遇到的问题是,当窗口弹出我的代码以检查它是否有效同时运行时。这是一个问题,因为我只想在用户按下确定后检查它是否有效。这是代码
public void actionPerformed(ActionEvent ae)
{
else if(ae.getActionCommand().equals("Login")){
login();
}
else if(ae.getActionCommand().equals("Press Me To Continue")){
if(PasswordClass.worked){
//worked is a static variable from the PasswordClass class
}
pressMe.setVisible(false);
}
}
因此,只要在PasswordClass JFrame上按下OK,就会弹出一个小按钮并要求SECOND保存。我希望它从第一个OK按钮保存。我制作另一个按钮的原因是因为我不知道如何停止并等待按下OK按钮。我的if循环检查它是否有效已经在用户按下OK之前自动返回false。这是我的问题,我真的很困惑如何解决它。 有帮助吗?如果需要更多代码,我会提供它,但我认为这已经足够了。
答案 0 :(得分:1)
我制作另一个按钮的原因是因为我不知道如何停止并等待按下确定按钮
使用某种模式对话框,有关详细信息,请参阅How to Make Dialogs
从概念上讲,您希望显示一个模式对话框,该对话框会提示用户输入一些信息,同时在代码中阻止对话框可见。当对话框被解除时(出于任何原因),您将要检查对话框中的结果并根据用户的操作采取适当的操作
答案 1 :(得分:0)
对象之间需要某种形式的同步(不一定与该名称的语句相关)。
如果想要检查结果的代码想要阻塞,直到设置结果,您可以使用CountDownLatch
:actionPerformed方法调用CountDownLatch.countDown()
,而其他代码调用CountDownLatch.await()
另一方面,如果检查结果的代码不想阻塞,那么一个简单的两布尔方法就可以正常工作。有一个布尔值表示按钮是否按下完毕,另一个布尔表示按下按钮是否正常。