【问题标题】:How to avoid Multiple Jbutton selections如何避免多个 Jbutton 选择
【发布时间】:2016-04-03 20:13:18
【问题描述】:

我正在将 Jbuttons 用于一款名为的游戏,该游戏希望在一项任务中成为亿万富翁。我正在使用按钮选择答案。这是一些按钮的代码。代码:

}

        });
        Answer2.setBounds(220, 105, 188, 25);
        panel.add(Answer2);

        Answer1 = new JButton("A");
        Answer1.setBackground(Color.YELLOW);
        Answer1.setHorizontalAlignment(SwingConstants.LEFT);
        Answer1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Answer1.setBackground(Color.BLUE);
                Answer1.setForeground(Color.WHITE);
            }
        });
        Answer1.setBounds(20, 105, 188, 25);
        panel.add(Answer1);

        Answer4 = new JButton("D");
        Answer4.setBackground(Color.YELLOW);
        Answer4.setHorizontalAlignment(SwingConstants.LEFT);
        Answer4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
        Answer4.setBackground(Color.BLUE);
        Answer4.setForeground(Color.WHITE);
    }
});

目前可以选择多个按钮,我希望防止这种情况发生。如果您能向我展示一个可用于执行此操作的代码示例,将会很有帮助。

【问题讨论】:

  • 您希望其他按钮在单击一个按钮时处于非活动状态吗?
  • 不,我正在使用 Eclipse,抱歉,我忘了在问题中提及这一点。
  • 在 ButtonGroup 中使用 JRadioButtons
  • 当一个按钮被点击它会改变颜色,但我不希望用户能够点击多个按钮。

标签: java jbutton


【解决方案1】:

使用 setEnable() 方法可以禁用不需要的按钮或设置布尔类级别变量,并在单击所需按钮时使其为真。然后在调用其他按钮的算法之前,只需检查这个变量的值是否为真。

已编辑

   public class YourClassName{

       static boolean isAnswerSelected = false;

       //your codes goes here

       Answer1.setHorizontalAlignment(SwingConstants.LEFT); 
       Answer1.addActionListener(new ActionListener() { 

         public void actionPerformed(ActionEvent e) { 

             if(!isAnswerSelected){  //this line will check whether an answer is already selected
                  isAnswerSelected = true;   // this will make other answers unselectable
                  Answer1.setBackground(Color.BLUE); 
                  Answer1.setForeground(Color.WHITE); 
             }
         } 
       });

   }  

使用上面的 if 语句和 isAnswerSelected = true;所有按钮的所有 actionPerformed() 方法的行。

【讨论】:

  • 嗨,只是想知道你能举个例子吗谢谢。如果是这样,那将是非常感谢
  • 私人 JButton Answer1;私人 JButton Answer2;
  • Answer1 = new JButton("A"); Answer1.setBackground(Color.YELLOW); Answer1.setHorizo​​ntalAlignment(SwingConstants.LEFT); Answer1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Answer1.setBackground(Color.BLUE); Answer1.setForeground(Color.WHITE); } }); Answer1.setBounds(20, 105, 188, 25); panel.add(Answer1);
  • Answer2 = new JButton("B"); Answer2.setBackground(Color.YELLOW); Answer2.setHorizo​​ntalAlignment(SwingConstants.LEFT); Answer2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Answer2.setBackground(Color.BLUE); Answer2.setForeground(Color.WHITE); } }); Answer2.setBounds(220, 105, 188, 25); panel.add(Answer2);
  • 如果可能的话,您能否举例说明我在 cmets 中添加的代码,说明如何使用 SetEnable 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多