在选择和取消选择时从JComboBox获取值

时间:2015-04-08 01:33:14

标签: java swing jcombobox itemlistener

我正在尝试从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);
    }

此外,除非我调整窗口大小,否则它不会显示标签..

1 个答案:

答案 0 :(得分:1)

您正在创建JLabel的新实例每次更改itemStateChanged,因此您尝试从尚未添加标签的容器中删除标签。

相反,只需创建一个JLabel并更新它的text属性

我想知道为什么要创建JLabelJPanelJTextField的新实例,而您似乎只是想更新以前的状态