我正在开展一个项目并且已经陷入困境。我正在使用Java Swing,这就是问题所在:
当用户点击readMore按钮时,我正在创建一个类VerifyFF的实例。现在,这个类创建了一个框架,它有一个输入字段和两个按钮,即取消和继续。如果用户按下取消,则框架处理并且不需要执行任何操作。如果他在文本字段中输入了正确的密码,然后按下cont,我需要检查密码是否正确。为此,我使用名为verify的布尔变量。
输入的密码正确后,验证的值设置为true,否则没有任何反应。用户获取并提示输入错误密码,并再次输入正确的密码或按下取消。
现在,在我创建VerifyFF类实例的类中,我想检查输入的密码是否正确,因此我检查变量boolean的值(也是静态的)。麻烦的是,当VerifyFF的构造函数运行时,没有什么能阻止执行并等待用户输入内容。检查都在函数
内完成JButton.addActionListener(new ActionListener()
{
};
实例化变量的类中的代码是:
VerifyFF vff = new VerifyFF();
如果(vff.verified)
readMore();
每当我运行此代码时,它都不会等待查看是否放置了任何按钮。我想知道如何让它等到按下某个按钮。
答案 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方法。然后你可以根据布尔'有效'
做任何你需要的事情