【问题标题】:change state of toggle button by clicking another toggle button with setSelected event通过单击具有 setSelected 事件的另一个切换按钮来更改切换按钮的状态
【发布时间】:2013-07-19 07:56:15
【问题描述】:

我想通过单击另一个切换按钮来更改切换按钮的状态。我的代码不能那样工作。那部分有问题:

private void jToggleButton12ActionPerformed(java.awt.event.ActionEvent evt) {                                                
        processValue("+");
        if(values.contains("+"))
            jToggleButton12.setSelected(true);
        else
            jToggleButton12.isSelected();
    }

private void jToggleButton13ActionPerformed(java.awt.event.ActionEvent evt) {                                                
    processValue("-");
    if(values.contains("-"))
        jToggleButton13.setSelected(true);
    else
        jToggleButton13.isSelected();
}                                               

private void jToggleButton14ActionPerformed(java.awt.event.ActionEvent evt) {                                                
    processValue("*");
    if(values.contains("*"))
        jToggleButton14.setSelected(true);
    else
        jToggleButton14.isSelected();
}                                               

private void jToggleButton15ActionPerformed(java.awt.event.ActionEvent evt) {                                                
    processValue("/");
    if(values.contains("/"))
        jToggleButton15.setSelected(true);
    else
        jToggleButton15.isSelected();
}                        

此代码仅选择微动按钮,当我单击它时仍处于选中状态。

【问题讨论】:

    标签: java button calculator


    【解决方案1】:

    您可以将这些按钮添加到ButtonGroup

    ,而不是手动处理每个按钮的每个切换和取消切换

    代码应该是这样的:

    ButtonGroup group = new ButtonGroup();
    
    group.add(jToggleButton1);
    group.add(jToggleButton2);
    group.add(jToggleButton3);
    //...etc
    

    这将自动处理每个按钮的取消切换。现在您只需要处理每个按钮的作用。

    【讨论】:

    • 我需要像 jToggleButton.setSelected(?); 这样的代码但我不能给“?”的参数部分。关于 if-else 语句:if 部分有效,但 else 部分不能按我想要的方式工作
    • isSelected(); 返回一个布尔值,告诉您按钮是否被选中。要设置按钮的选择状态,请使用布尔值作为setSelected(); 的参数但ButtonGroup 将自动处理选择和取消选择(切换)。您需要处理的只是每个按钮的processValue("/"); 方法。使用@Juvanis 的答案中显示的数组会很好地解决这个问题。
    【解决方案2】:

    我猜你想实现单选按钮的行为,即一次只选择一个。要实现这一点,我建议您使用 JToggleButton 实例的数组。执行操作时,遍历此数组并取消选择所有按钮,然后根据您的特定条件设置特定按钮。

    JToggleButton[] buttons = new JToggleButton[5];
    ...
    private void actionPerformed(java.awt.event.ActionEvent evt) 
    {                                                
            processValue("+");
    
            for(JToggleButton b: buttons)
               b.setSelected(false);
            if(values.contains("+"))
                jToggleButton12.setSelected(true);
    }
    

    【讨论】:

    • 通过使用此代码如何在我的包中创建类“JToggleButton”?
    • @cansukartal 你不需要创建那个类,它是包'javax.swing.JToggleButton'中标准Java库的一部分,只需导入它。
    • 它已导入,但现在我生成的代码有问题如果我可以在这里复制我的整个代码,也许你可以更容易地理解问题我怎样才能向你展示我的整个代码?
    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 2019-04-23
    • 2020-08-24
    相关资源
    最近更新 更多