Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在标签上显示列表选定值_Java_Label_Awt_Selectedvalue - Fatal编程技术网

Java 在标签上显示列表选定值

Java 在标签上显示列表选定值,java,label,awt,selectedvalue,Java,Label,Awt,Selectedvalue,ItemListener在这里实现,下面的代码就是其中的一部分。在这里,我需要从列表中选择的项目显示在标签上。此代码不起作用。 谢谢你的帮助 public void itemStateChanged(ItemEvent ie) { String data = objectOfList.getSelectedItem(); objectOfLabel.setText("selected item: " + data); } 它不工作,因为事件调度线程(Java GUI线程)正忙于

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()方法

我编写了一个小演示,您可以将其用作参考:

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);
}
publicstaticvoidmain(字符串[]args){
JComboBox comboBox=新的JComboBox();
comboBox.addItem(“项目1”);
comboBox.addItem(“项目2”);
JLabel标签=新的JLabel();
comboBox.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent e){
label.setText(“所选项目:+comboBox.getSelectedItem());
}
});
JPanel面板=新的JPanel();
面板。添加(标签);
panel.add(组合框);
JFrame=新JFrame();
框架。添加(面板);
frame.pack();
frame.setVisible(true);
}

这只起了一次作用。我选择的第一个元素出现在标签上。但是如果更改了选择,则该值不可更新。示例和文档提供了帮助。非常感谢