【问题标题】:How to wait till one of the buttons is clicked?如何等到单击其中一个按钮?
【发布时间】:2011-04-14 09:32:17
【问题描述】:

我正在做一个项目,但一直停留在某个点上。我正在使用 Java Swing,这就是问题所在:

当用户单击 readMore 按钮时,我正在创建类 VerifyFF 的实例。现在,这个类创建了一个框架,它有一个输入字段和两个按钮,即取消和继续。如果用户按下取消,那么框架就会被释放并且不需要做任何事情。如果他在文本字段中输入正确的密码然后按继续,我需要检查密码是否正确。为此,我使用了一个名为已验证的布尔变量。

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

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

JButton.addActionListener(new ActionListener()
{
};

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

VerifyFF vff = new VerifyFF();

如果(vff.verified)

readMore();

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

【问题讨论】:

    标签: java swing wait actionlistener


    【解决方案1】:

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

    if(vvf.verified) readMode(); 
    

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

    【讨论】:

    • 非常感谢!我不知道我是怎么跳过的。
    【解决方案2】:

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

    祝你好运,波罗。

    【讨论】:

      【解决方案3】:

      你的类应该有一个 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 方法。然后你可以根据布尔值'valid'做任何你需要的事情

      【讨论】:

        猜你喜欢
        • 2022-11-02
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        相关资源
        最近更新 更多