【问题标题】:Need to disable buttons depending on if a radio button is selected需要根据是否选择单选按钮来禁用按钮
【发布时间】:2017-11-21 03:45:19
【问题描述】:

我正在尝试在程序员模式下编写功能齐全的 Windows 7 计算器。现在,我正在努力让按钮正常工作。因此,我希望禁用将用于 hexa 的按钮,直到选择 hex 的单选按钮。因此,在 dec 或 Bint 模式下,A-F 按钮将被禁用,直到它被选中。

这里是按钮 A:

JButton button_A = new JButton("A");
button_A.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        button_A.setEnabled(false);
        hexDisable();
        textField.setText(textField.getText() + "A");
    }
});

这是单选按钮:

JRadioButton rButton_Hex = new JRadioButton("Hex");
rButton_Hex.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        hexDisable();
    }
});
rButton_Hex.setBounds(9, 218, 54, 23);
contentPane.add(rButton_Hex);
Group1.add(rButton_Hex);

这是启用和禁用相应按钮的方法。

public void hexDisable(){
    button_A.setEnabled(true);
}

我对在 Java 中使用 GUI 非常陌生。

【问题讨论】:

  • 如果我可以建议,也许可以考虑为您的不同计算器模式创建按钮工具栏或单独的按钮面板,然后简单地隐藏 (.setVisible(false)) 您当前不需要的那些并显示一个( s) 你确实需要 (.setVisible(true))。
  • 您可以: 将按钮组放在某种List 中,以便更轻松地更改其状态;您可以:将Lists 放在某种Map 中,以便于管理

标签: java user-interface button calculator windowsbuilder


【解决方案1】:

只需在您的 RadioGroup 上设置 setOnCheckedChangeListener:

RadioGroup radG = (RadioGroup) findViewById(R.id.yourRadioGroup);        
radG.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // checkedId is the RadioButton selected
        switch(checkedId) 
        {
        case R.id.hexa:     
        //enable or disable button
        break;

        case R.id.normal: 
        //enable or disable button        
        break;

        case R.id.other:  
        //enable or disable button       
        break;
        }
    }
});

【讨论】:

  • 问题是关于 Swing,而不是 Android。
【解决方案2】:

它只是导入所需的目录,然后 JRadioButton 被初始化为“NULL”,用于打开和关闭,然后添加到 ButtonGroup!

Import Javax.swing.Jframe;
Private JRadioButton rdbtnOn=null;
Private JRadioButton rdbtnOff=null;
Private ButtonGroup bg = new ButtonGroup();
bg.add(rdbtnOn);
bg.add(rdbtnOFF);

【讨论】:

  • 请添加一些文字来解释您的答案
猜你喜欢
  • 2017-06-30
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2012-04-02
  • 2010-11-22
相关资源
最近更新 更多