import java.awt.CheckboxGroup; //導入依賴的package包/類
@Override
public void itemStateChanged(final ItemEvent e) {
// group.setSelectedCheckbox() will repaint the component
// to let LWCheckboxPeer correctly handle it we should call it
// after the current event is processed
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
boolean postEvent = true;
final CheckboxGroup group = getTarget().getCheckboxGroup();
if (group != null) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (group.getSelectedCheckbox() != getTarget()) {
group.setSelectedCheckbox(getTarget());
} else {
postEvent = false;
}
} else {
postEvent = false;
if (group.getSelectedCheckbox() == getTarget()) {
// Don't want to leave the group with no selected
// checkbox.
getTarget().setState(true);
}
}
} else {
getTarget().setState(e.getStateChange()
== ItemEvent.SELECTED);
}
if (postEvent) {
postEvent(new ItemEvent(getTarget(),
ItemEvent.ITEM_STATE_CHANGED,
getTarget().getLabel(),
e.getStateChange()));
}
}
});
}