Java 如何等待其中一个按钮被单击?

Java 如何等待其中一个按钮被单击?,java,swing,wait,actionlistener,Java,Swing,Wait,Actionlistener,我正在做一个项目,在某一点上遇到了困难。我正在使用Java Swing,这就是问题所在: 当用户单击readMore按钮时,我正在创建VerifyFF类的实例。现在,这个类创建了一个框架,它有一个输入字段和两个按钮,即cancel和continue。如果用户按“取消”,则帧将被处理,无需执行任何操作。如果他在文本字段中输入正确的密码,然后按cont,我需要检查密码是否正确。为此,我使用了一个名为verified的布尔变量 当输入的密码正确时,verified的值设置为true,否则不会发生任何情

我正在做一个项目,在某一点上遇到了困难。我正在使用Java Swing,这就是问题所在:

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

当输入的密码正确时,verified的值设置为true,否则不会发生任何情况。用户收到错误密码的提示,他可以再次输入正确的密码,也可以按“取消”

现在,在我创建VerifyFF类实例的类中,我想检查输入的密码是否正确,因此我要检查变量boolean的值(也是静态的)。问题是,当VerifyFF的构造函数运行时,没有任何东西会停止执行并等待用户输入内容。这两个检查都是在函数内部完成的

JButton.addActionListener(new ActionListener()
{
};
实例化变量的类中的代码是:

VerifyFF vff=新的VerifyFF()

如果(vff.已验证)

readMore()


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

您的类应该有一个validatePassword方法,单击continue按钮即可调用该方法

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方法。然后,您可以根据布尔值“valid”执行任何需要的操作。

您的类应该有一个validatePassword方法,单击continue按钮即可调用该方法

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方法。然后,您可以根据布尔值“valid”执行任何需要的操作。

我不确定这个问题。但也许你应该重新考虑你的实施。在构造函数中,只进行第一次显示,然后在用户单击更多且密码正确时提供更多的函数。 您真的不需要停止构造构造函数,这听起来很糟糕


祝你好运,波罗。

我不确定这个问题。但也许你应该重新考虑你的实施。在构造函数中,只进行第一次显示,然后在用户单击更多且密码正确时提供更多的函数。 您真的不需要停止构造构造函数,这听起来很糟糕


祝你好运,波罗。

你不必等到有人按下按钮。动一下你的手

if(vvf.verified) readMode(); 

进入动作监听器中,点击“继续”按钮。

您不必等到有人按下按钮。动一下你的手

if(vvf.verified) readMode(); 

进入您的“继续”按钮的操作侦听器。

非常感谢!我不知道我是怎么跳过的。非常感谢!我不知道我是怎么跳过的。