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
Post a Comment