JRadioButtons 그룹과 JCheckBox가 있습니다. JCheckBox가 선택 해제 된 경우 JRadioButtons가 비활성화되고 재설정되어야하며 반대의 경우도 마찬가지입니다. 내가 가지고있는 문제는 내가 JCheckBox를 체크하든 안하든, JRadioButtons를 사용할 수 없다는 것이다.JCheckBox는 JRadioButton을 활성화/비활성화합니다.
또한 코드로 진행하기 전에 null 레이아웃과 다른 클래스가 없어도 상관 없습니다. 나는 여기에 붙여 넣어야 할 코드의 양을 줄이기 위해 신속하게 테스트 프로젝트를 만들었다. @zubergu는 지적
package test;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JPanel;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 434, 261);
frame.getContentPane().add(panel);
JCheckBox ckbxTestCheckBox = new JCheckBox("Test Check Box");
ckbxTestCheckBox.setBounds(7, 7, 99, 23);
panel.add(ckbxTestCheckBox);
JRadioButton rdbtnTestRadioButton1 = new JRadioButton("Test Radio Button 1");
rdbtnTestRadioButton1.setBounds(7, 34, 121, 23);
panel.add(rdbtnTestRadioButton1);
JRadioButton rdbtnTestRadioButton2 = new JRadioButton("Test Radio Button 2");
rdbtnTestRadioButton2.setBounds(7, 61, 121, 23);
panel.add(rdbtnTestRadioButton2);
JRadioButton rdbtnTestRadioButton3 = new JRadioButton("Test Radio Button 3");
rdbtnTestRadioButton3.setBounds(7, 88, 121, 23);
panel.add(rdbtnTestRadioButton3);
JRadioButton rdbtnTest[] = {rdbtnTestRadioButton1, rdbtnTestRadioButton2, rdbtnTestRadioButton3};
ButtonGroup btnGrpTest = new ButtonGroup();
for(int i = 0; i < rdbtnTest.length; i++){
btnGrpTest.add(rdbtnTest[i]);
}
if(!ckbxTestCheckBox.isSelected()){
for(int i = 0; i < rdbtnTest.length; i++){
rdbtnTest[i].setEnabled(false);
rdbtnTest[i].setSelected(false);
}
} else { //Is this part even necessary?
for(int i = 0; i < rdbtnTest.length; i++){
rdbtnTest[i].setEnabled(true);
}
}
}
}
라디오 버튼을 적절하게 활성화/비활성화하는 확인란 동작 수신기를 어디에 추가합니까? 아무데도 없다면 - 그게 당신 문제예요. – zubergu
ActionListener 사용에 대한 작업 예제는 [Checkbox 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/components/button.html)의 스윙 튜토리얼을 참조하십시오. 또한 main() 메소드에서 모든 코드를 정의하지 않아야합니다. 튜토리얼에있는 'CheckBoxDemo' 코드는 코드를 더 잘 구조화하는 방법을 보여줍니다. – camickr
@zubergu 감사합니다! 나는 실제로 ItemListener/ActionListener가 없다. – Maikyl