package checkbox; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; public class ManyCheckComboBox extends JComboBox implements ActionListener { public ManyCheckComboBox() { addItem(new CheckValue(false, "ȫѡ")); this.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { itemSelected(); } }); } private void itemSelected() { if (getSelectedItem() instanceof CheckValue) { if (getSelectedIndex() == 0) { selectedAllItem(); } else { CheckValue jcb = (CheckValue) getSelectedItem(); jcb.bolValue = (!jcb.bolValue); setSelectedIndex(getSelectedIndex()); } SwingUtilities.invokeLater( new Runnable() { public void run() { /*Ñ¡ÖкóÒÀÈ»±£³Öµ±Ç°µ¯³ö״̬*/ showPopup(); } }); } } private void selectedAllItem() { boolean bl = false; for (int i = 0; i < getItemCount(); i++) { CheckValue jcb = (CheckValue) getItemAt(i); if (i == 0) { bl = !jcb.bolValue; } jcb.bolValue = (bl); } setSelectedIndex(0); } /*»ñȡѡȡµÄ¶ÔÏó*/ public ArrayList getSelectItemValues() { ArrayList arrayList = new ArrayList(); for (int i = 1; i < getItemCount(); i++) { CheckValue jcb = (CheckValue) getItemAt(i); if (jcb.bolValue) { arrayList.add(jcb.value); } } return arrayList; } }