Java 在标签上显示列表选定值
ItemListener在这里实现,下面的代码就是其中的一部分。在这里,我需要从列表中选择的项目显示在标签上。此代码不起作用。 谢谢你的帮助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线程)正忙于
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);
}
这只起了一次作用。我选择的第一个元素出现在标签上。但是如果更改了选择,则该值不可更新。示例和文档提供了帮助。非常感谢