显示标签上的选定值列表

时间:2017-06-26 16:19:15

标签: java label awt selectedvalue

ItemListener在这里实现,下面的代码只是部分。在这里,我需要从列表中选择的项目显示在标签上。这段代码不起作用。 谢谢你的帮忙。

public void itemStateChanged(ItemEvent ie)
{
    String data = objectOfList.getSelectedItem();
    objectOfLabel.setText("selected item: " + data);
}

2 个答案:

答案 0 :(得分:0)

它无法正常工作,因为Event Dispatch Thread(Java GUI线程)忙于在actionPerformed()方法中执行代码。所以,你可以把代码放在一个  actionPerformed()方法中的线程,然后标签将被更新。

public void actionPerformed(ActionEvent e) {
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            String data = objectOfList.getSelectedItem();
            objectOfLabel.setText("selected item: " + data);
        }     
    });

    thread.start();
}

答案 1 :(得分:0)

您希望向组合框添加项侦听器,每次用户选择或取消选择项时,都会调用其itemStateChanged()方法。

https://docs.oracle.com/javase/7/docs/api/java/awt/event/ItemListener.html#itemStateChanged(java.awt.event.ItemEvent)

我已经编写了一个可以作为参考的小型演示:

public static void main(String[] args) {
    JComboBox<String> comboBox = new JComboBox<>();
    comboBox.addItem("item1");
    comboBox.addItem("item2");

    JLabel label = new JLabel();

    comboBox.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            label.setText("selected item: " + comboBox.getSelectedItem());
        }
    });

    JPanel panel = new JPanel();
    panel.add(label);
    panel.add(comboBox);

    JFrame frame = new JFrame();
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
}