java - Update JComboBox popupMenu -


i have jcombobox 1 value in start , have 1 mouselistener connected it. when click on jcombobox fill new values. popupmenu of size of 1 element on first click on jcombobox. second time values appear normal. idea how can make combobox update popupmenu directly after have updated content?

example program:

public class comboboxupdate extends jframe implements mouselistener {      private jcombobox<string> box;     public comboboxupdate(){         // init         jpanel panel = new jpanel();         box = new jcombobox<string>();         box.additem("from start");          // add listener         component[] comps = box.getcomponents();         for(int = 0; < comps.length; i++)             comps[i].addmouselistener(this);          panel.add(box);         this.add(panel);         this.pack();         this.setvisible(true);     }      @override     public void mouseclicked(mouseevent e) {         if(box.getitemcount() == 1){             box.removeallitems();             box.additem("item 1");             box.additem("item 2");             box.additem("item 3");         }     }      public static void main(string[] args){         new comboboxupdate();     }      @override     public void mousepressed(mouseevent e) {}      @override     public void mousereleased(mouseevent e) {}      @override     public void mouseentered(mouseevent e) {}      @override     public void mouseexited(mouseevent e) {} } 

i think it's better solution:

public class comboboxupdate extends jframe implements popupmenulistener {      private jcombobox box;      public comboboxupdate() {         // init         jpanel panel = new jpanel();         box = new jcombobox();         box.additem("from start");          box.addpopupmenulistener(this);          panel.add(box);         this.add(panel);         this.pack();         this.setvisible(true);     }      @override     public void popupmenuwillbecomevisible(popupmenuevent e) {         if (box.getitemcount() == 1) {             box.removeallitems();             box.additem("item 1");             box.additem("item 2");             box.additem("item 3");         }     }      @override     public void popupmenuwillbecomeinvisible(popupmenuevent e) {     }      @override     public void popupmenucanceled(popupmenuevent e) {     } } 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

qt - Errors in generated MOC files for QT5 from cmake -