在标签上显示列表选择值

Display list selected value on label

这里实现了ItemListener,下面的代码只是其中的一部分。在这里,我需要从列表中选择的项目显示在标签上。此代码无效。 谢谢你的帮忙。

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

它不起作用,因为事件调度线程(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();
}

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

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

我写了一个小demo,你可以参考一下:

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);
}