【问题标题】:How will I be able to compare two button presses from a choice of three?如何从三个选项中比较两个按钮按下?
【发布时间】:2020-03-06 14:21:00
【问题描述】:

我有 3 个按钮

b1 b2 b3

我现在想要轮流按下这些按钮。 因此,我按下第一个,另一个人按下第二个。 所以在第二回合之后,我会比较按钮的名称。

b1.addActionListener(new ActionListener() {
    public void actionPerformed( ActionEvent event ) {
        b1.setEnabled(false);
        if (!b1.isEnabled() && !b2.isEnabled()) {
            //computeWinner(b1.getText(), b2.getText());
        } else if(!b1.isEnabled() && !b3.isEnabled()) {
            //computeWinner(b1.getText(), b2.getText());
        }
    }
});

这是我认为可行的方法,但是这有很多问题, 首先,由于我禁用了按钮,第二个用户总是少一个选项。其次,if 语句似乎不起作用?我应该如何比较 JButton b3 = new JButton ("你好");

编辑: 我能够成功地比较这两个按钮。现在我唯一的问题是,对于第二个玩家,其中一个按钮被禁用(如何在不禁用它们的情况下捕获第一个按钮按下和第二个按钮?)。而且经过比较后,我不知道如何重新设置板子。 (对于一定数量的循环。)

感谢您的帮助!

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

    以下代码将打印已按下按钮的标签。我希望,你应该能够从这里开始。如果您遇到任何进一步的问题,请随时告诉我。

    ActionListener actionListener = new ActionListener(){
      public void actionPerformed(ActionEvent actionEvent) {
          System.out.println(actionEvent.getActionCommand());
      }
    };
    

    【讨论】:

    • 嗨,我的比较是这样进行的,但是,我仍然面临按下按钮的问题(它会禁用,因此其他玩家无法按下其中一个按钮)。并且能够在每次比较后继续按下按钮。
    【解决方案2】:

    有多种选择。

    1. 将按钮存储在map<Integer, String> 中。该整数将是跟踪推送的计数。该字符串将是按下按钮的 actionCommand。
    2. 将按钮 actionCommands 存储在列表或数组中。

    在上述任一方法中,您都可以提供适当的逻辑来比较按钮,然后重置数组或映射和计数。

    注意:除非明确设置,否则 actionCommand 默认为按钮标签。

    【讨论】:

    • 您好,感谢您的回复。我对java真的很陌生,所以我不确定我应该使用“map”,因为我还没有被介绍过。我能够成功比较两个按钮。现在我唯一的问题是,对于第二个玩家,其中一个按钮被禁用。而且经过比较后,我不知道如何重新设置板子。 (对于一定数量的循环。) - 我将把它编辑到我的问题中。
    • 我稍微修改了我的答案。第三种选择是为每个按钮使用不同的动作监听器。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2013-10-17
    • 2014-03-07
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2021-07-03
    相关资源
    最近更新 更多