我正在尝试使用NetBeans的设计模式创建JForm,然后在源代码模式下开发它。我的表单中有两个按钮,我想在generateNumber按钮执行其任务之前检查是否单击了makeGuess按钮。这是相关的代码行。

private void generateNumberActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

    }

    private void makeGuessActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        try {
            if (!generateNumber.getModel().isPressed()) {
                throw new GameNotStartedException();
            }
        } catch (GameNotStartedException ex) {
            System.out.println(ex);
            JOptionPane.showMessageDialog(this, "Generate a number first");
        }

    }


我的问题是程序总是落在GameNotStartedException上,无论是否单击generateNumber按钮都可以。有人可以帮我吗?

最佳答案

我认为问题是generateNumber.getModel().isPressed()本身的用法。这告诉您当前是否按下了按钮。

当您在方法makeGuessActionPerformed中拥有它时,它就像这样:


您正在按按钮makeGuess
方法makeGuessActionPerformed被执行
作为方法的一部分,您检查是否单击了按钮generateNumber(这不是正确的,因为您单击了按钮makeGuess)


您可以例如使用布尔值来跟踪状态。布尔值反映是否已按下按钮generateNumbers。


单击按钮generateNumbers会将布尔值设置为true。
在方法makeGuessActionPerformed中,您可以检查布尔值。如果为false,则抛出异常。否则,继续执行。

09-04 07:02