2017-06-19 91 views
0

我试图在编程器模式下编写功能完整的Windows 7计算器。现在,我正在努力让按钮正常工作。所以我想要用于hexa的按钮被禁用,直到选择了十六进制的单选按钮。因此,在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非常新颖。

+1

如果我可以建议,也许是考虑为不同的计算器模式创建按钮工具栏或个人按钮面板和简单的隐藏(.setVisible(假) )那些你目前不需要的,并显示你需要的(.setVisible(true))。 – DevilsHnd

+0

你可以:将按钮组放置在某种“列表”中,以便更改它们的状态;您可以:将'List'放入某种'Map'中以便管理。 – MadProgrammer

回答

0

只是要setOnCheckedChangeListener您RadioGroup中

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; 
     } 
    } 
}); 
+1

问题是关于Swing,而不是Android。 – Mordechai

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

请添加一些文字来解释您的答案 – EBH