【发布时间】:2023-03-10 01:22:01
【问题描述】:
我正在尝试编写一个非常短的类,将 JPanel 与 JComboBox “联系起来”。我想我的逻辑是错误的,但是当我使用 JComboBox 选择新的东西时没有任何反应......这是(或多或少)我的代码:
private DisplayPanel currentDisplay; //a displaypanel is simply an extended JPanel with an id field, and an overriden .equals() method
private JComboBox selector;
private List<DisplayPanel> displays;
public SelectionPanel(DisplayPanel panel){
displays = new ArrayList<DisplayPanel>();
selector = new JComboBox(new String[]{panel.id});
currentDisplay = panel;
selector.addActionListener(this);
this.add(selector);
this.add(currentDisplay);
this.displays.add(panel);
}
public void addNewSelection(DisplayPanel panel){
displays.add(panel);
selector.addItem(panel.id);
}
@Override
public void actionPerformed(ActionEvent e) {
JComboBox source = (JComboBox) e.getSource();
String id = (String) source.getSelectedItem();
for(DisplayPanel display: displays)
if(id.equals(display.id))
currentDisplay = display;
this.validate();
}
我假设我需要以某种方式覆盖 repaint() 函数,但我真的不确定最好的方法。
【问题讨论】:
-
我不是 100% 确定,但我认为您不应该每次都完全更换该面板。 (虽然我不是 100% 确定)
标签: java swing jpanel jcombobox