【发布时间】:2013-05-10 08:28:01
【问题描述】:
我有一个JComboBox,一开始只有一个值,并且有一个 MouseListener 连接到它。当我点击JComboBox 时,我用一些新值填充它。但是在第一次点击JComboBox 时,popupMenu 的大小只有一个元素。第二次所有值都将正常显示。
知道如何让组合框在更新其内容后直接更新其 popupMenu 吗?
示例程序:
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) {}
}
【问题讨论】: