Я пытаюсь написать довольно короткий класс, который «связывает» 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();
}
Я предполагаю, что мне нужно переопределить перерисовку() как-то работает, но я действительно не уверен, лучший способ сделать это.