我正在尝试从JComboBox中显示一个选定的项目(我确实要显示)但是当我传递一个ItemListener以查看它是否被取消选择时,另一个标签仍会显示,它只是重叠下一个标签。这是我的代码:
ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent event) {
int state = event.getStateChange();
JPanel select = new JPanel();
JLabel label = new JLabel("Department Selected: ");
JTextField selected = new JTextField(10);
switch (state) {
case ItemEvent.SELECTED:
String selection = (String) aDpts.getSelectedItem();
selected.setEditable(false);
selected.setText(selection);
select.add(label);
select.add(selected);
break;
case ItemEvent.DESELECTED:
label.removeAll();
selected.removeAll();
select.removeAll();
break;
}
add(select, BorderLayout.LINE_END);
}
此外,除非我调整窗口大小,否则它不会显示标签..
答案 0 :(得分:1)
您正在创建JLabel
的新实例每次更改itemStateChanged
,因此您尝试从尚未添加标签的容器中删除标签。
相反,只需创建一个JLabel
并更新它的text
属性
我想知道为什么要创建JLabel
,JPanel
和JTextField
的新实例,而您似乎只是想更新以前的状态{ p>