如何等到其中一个按钮被点击?

时间:2011-04-14 09:32:17

标签: java swing wait actionlistener

我正在开展一个项目并且已经陷入困境。我正在使用Java Swing,这就是问题所在:

当用户点击readMore按钮时,我正在创建一个类VerifyFF的实例。现在,这个类创建了一个框架,它有一个输入字段和两个按钮,即取消和继续。如果用户按下取消,则框架处理并且不需要执行任何操作。如果他在文本字段中输入了正确的密码,然后按下cont,我需要检查密码是否正确。为此,我使用名为verify的布尔变量。

输入的密码正确后,验证的值设置为true,否则没有任何反应。用户获取并提示输入错误密码,并再次输入正确的密码或按下取消。

现在,在我创建VerifyFF类实例的类中,我想检查输入的密码是否正确,因此我检查变量boolean的值(也是静态的)。麻烦的是,当VerifyFF的构造函数运行时,没有什么能阻止执行并等待用户输入内容。检查都在函数

内完成
JButton.addActionListener(new ActionListener()
{
};

实例化变量的类中的代码是:

  

VerifyFF vff = new VerifyFF();

     

如果(vff.verified)

     

readMore();

每当我运行此代码时,它都不会等待查看是否放置了任何按钮。我想知道如何让它等到按下某个按钮。

3 个答案:

答案 0 :(得分:3)

你不必等到有人按下按钮。只需移动你的

if(vvf.verified) readMode(); 

进入“继续”按钮的动作监听器。

答案 1 :(得分:1)

我不确定这个问题。但也许你应该重新考虑你的实施。在构造函数中只做第一个显示,然后有一个函数,只要用户点击更多并且密码正确,就会提供更多功能。 你真的不需要停止构造器的构建,这听起来很糟糕。

祝你好运,博罗。

答案 2 :(得分:0)

您的类应该有一个validatePassword方法,可以在单击“继续”按钮时调用该方法。

class VerifyFF implements ActionListener {

private static final String ACTION_CONTINUE = "CONTINUE";

private JButton continueBtn = null;
private static boolean valid = false;

public VerifyFF() {
    this.continueBtn = new JButton("Continue");
    this.continueBtn.setActionCommand(VerifyFF.ACTION_CONTINUE);
    this.continueBtn.addActionListener(this);
}

public static boolean validatePassword() {
    //Validates the password field...
}

void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals(VerifyFF.ACTION_CONTINUE)) {
        VerifyFF.valid = VerifyFF.validatePassword();
    }
}

}

这样,按下Continue按钮即可调用validate方法。然后你可以根据布尔'有效'

做任何你需要的事情