У меня есть JComboBox
только с одним значением в начале, и к нему подключен один MouseListener. Когда я нажимаю на JComboBox
, я заполняю его новыми значениями. Но popupMenu имеет размер одного элемента при первом нажатии на JComboBox
. Во второй раз все значения будут отображаться как обычно. Любая идея, как я могу заставить comboBox обновить свое всплывающее меню сразу после того, как я обновил его содержимое?
Пример программы:
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 i = 0; i < 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) {}
}