SSISO Community

시소당

CheckComboBox

check  box를  list로  가지는  combo  box  입니다.

  

        class  JCheckComboBox  extends  JComboBox

        {

                private  JList  chklist;

                private  JLabel  label  =  new  JLabel("Select");

                private  Vector  allList  =  new  Vector();

  

                public  JCheckComboBox()

                {

                        super();

                        setRenderer(new  CheckComboRenderer());

                }

  

                public  void  setPopupVisible(boolean  v)

                {

                        if  (v)

                                super.setPopupVisible(v);

                        else

                        {

                                if  (chklist  !=  null  &&  chklist.isValid())

                                {

                                        CheckableItem  item  =  (CheckableItem)getSelectedItem();

                                        item.setSelected(!item.isSelected());

                                        int  idx  =  getSelectedIndex();

                                        Rectangle  rect  =  chklist.getCellBounds(idx,  idx);

                                        chklist.repaint(rect);

                                }

                        }

                }

  

                public  void  addItem(Object  obj)

                {

                        allList.add((String)obj);

                        super.addItem(new  CheckableItem((String)obj));

                }

  

                public  void  setSelectedItem(String  str[])

                {

                        for  (int  i  =  0;  i  <  str.length;  i++)

                        {

                                int  idx  =  allList.indexOf(str[i]);

                                if  (idx  <  0)

                                        continue;

                                ((CheckableItem)getItemAt(idx)).setSelected(true);

                        }

                }

  

                public  Object[]  getSelectedObjects()

                {

                        Vector  v  =  new  Vector();

                        for  (int  i  =  0;  i  <  getItemCount();  i++)

                        {

                                CheckableItem  item  =  (CheckableItem)getItemAt(i);

                                if  (!item.isSelected())

                                        continue;

                                v.add(item.toString());

                        }

                        Object[]  objs  =  v.toArray();

                        return  objs;

                }

  

                private  class  CheckComboRenderer  extends  JCheckBox  implements  ListCellRenderer

                {

                        public  Component  getListCellRendererComponent(JList  list,

                                                                                                              Object  value,

                                                                                                              int  index,

                                                                                                              boolean  isSelected,

                                                                                                              boolean  cellHasFocus)

                        {

                                chklist  =  list;

                                if  (index  <  0)

                                        return  label;

                                else

                                {

                                        setSelected(((CheckableItem)value).isSelected());

                                        setText(value.toString());

                                        return  this;

                                }

                        }

                }

                private  class  CheckableItem

                {

                        private  String  str;

                        private  boolean  isSelected;

  

                        public  CheckableItem(String  str)

                        {

                                this(str,  false);

                        }

  

                        public  CheckableItem(String  str,  boolean  b)

                        {

                                this.str  =  str;

                                isSelected  =  b;

                        }

  

                        public  void  setSelected(boolean  b)

                        {

                                isSelected  =  b;

                        }

  

                        public  boolean  isSelected()

                        {

                                return  isSelected;

                        }

  

                        public  String  toString()

                        {

                                return  str;

                        }

                }

        }

출처  [JAVA]  CheckComboBox|작성자  세리카

768 view

4.0 stars