package com.onaro.util.jfc; import javax.swing.AbstractButton; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Arrays; import java.util.List; /** * This class makes sure that only one button of the group will be selected. * It is needed to support unselecting of all the buttons, which is not supported by radio buttons */ public class ButtonSelectionMutex implements ItemListener { private List buttons; public ButtonSelectionMutex(AbstractButton ... buttons) { this.buttons = Arrays.asList(buttons); for (AbstractButton button : buttons) { button.addItemListener(this); } } public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { for (AbstractButton button : buttons) { if(button != e.getSource()){ button.setSelected(false); } } } } }