Java Swing按钮组单击即清除
我有一个按钮组和两个单选按钮:Java Swing按钮组单击即清除,java,swing,radio-button,jpanel,Java,Swing,Radio Button,Jpanel,我有一个按钮组和两个单选按钮: private javax.swing.JRadioButton jRadioButtonESPRINCIPAL; private javax.swing.JRadioButton jRadioButtonESSECUNDARIO; buttonGroup1 = new javax.swing.ButtonGroup(); 我知道我可以通过buttonGroup1.clearSelection()清除组,但我只想在单击单选按钮时执行此操作 我试过了 pr
private javax.swing.JRadioButton jRadioButtonESPRINCIPAL;
private javax.swing.JRadioButton jRadioButtonESSECUNDARIO;
buttonGroup1 = new javax.swing.ButtonGroup();
我知道我可以通过buttonGroup1.clearSelection()清除组,但我只想在单击单选按钮时执行此操作
我试过了
private void jRadioButtonESPRINCIPALMouseClicked(java.awt.event.MouseEvent evt) {
if (jRadioButtonESPRINCIPAL.isSelected()) {
buttonGroup1.clearSelection();
}
else{
jRadioButtonESPRINCIPAL.setSelected(true);
}
}
private void jRadioButtonESSECUNDARIOMouseClicked(java.awt.event.MouseEvent evt) {
if (jRadioButtonESSECUNDARIO.isSelected()) {
buttonGroup1.clearSelection();
}
else{
jRadioButtonESSECUNDARIO.setSelected(true);
}
}
但这不起作用
任何帮助都将不胜感激我之前的回答是错误的,对不起。您必须像这样使用
ActionListeners
:
jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//your code goes here
}
});
jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (jRadioButtonESPRINCIPAL.equals(lastSelectedRadioButton)) {
buttonGroup1.clearSelection();
lastSelectedRadioButton = null;
}
else {
lastSelectedRadioButton = jRadioButtonESPRINCIPAL;
}
}
});
jRadioButtonESSECUNDARIO.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (jRadioButtonESSECUNDARIO.equals(lastSelectedRadioButton)) {
buttonGroup1.clearSelection();
lastSelectedRadioButton = null;
}
else {
lastSelectedRadioButton = jRadioButtonESSECUNDARIO;
}
}
});
然后使用变量存储最后选择的单选按钮
。在ActionListener
中,您必须检查isSelected()
是否等于最后一个选择。如果是,则使用按钮组1.clearSelection()代码>
最后的代码应该是这样的:
jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//your code goes here
}
});
jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (jRadioButtonESPRINCIPAL.equals(lastSelectedRadioButton)) {
buttonGroup1.clearSelection();
lastSelectedRadioButton = null;
}
else {
lastSelectedRadioButton = jRadioButtonESPRINCIPAL;
}
}
});
jRadioButtonESSECUNDARIO.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (jRadioButtonESSECUNDARIO.equals(lastSelectedRadioButton)) {
buttonGroup1.clearSelection();
lastSelectedRadioButton = null;
}
else {
lastSelectedRadioButton = jRadioButtonESSECUNDARIO;
}
}
});
您的代码的哪一部分调用了这些方法?我觉得在这里使用是一个更好的选择。@Berger我有两个单选按钮来调用这些方法。这对我不起作用:(,我想在您单击已单击的按钮时清除组。我更新了我的答案,请用新代码重试