ItemListener在这里实现,下面的代码只是部分。在这里,我需要从列表中选择的项目显示在标签上。这段代码不起作用。 谢谢你的帮忙。
public void itemStateChanged(ItemEvent ie)
{
String data = objectOfList.getSelectedItem();
objectOfLabel.setText("selected item: " + data);
}
答案 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()方法。
我已经编写了一个可以作为参考的小型演示:
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);
}