itemListener在此处实现,下面的代码只是部分。在这里,我需要从列表中的选定项目显示在标签上。此代码不起作用。感谢您的帮助。
public void itemStateChanged(ItemEvent ie)
{
String data = objectOfList.getSelectedItem();
objectOfLabel.setText("selected item: " + data);
}
您想将项目侦听器添加到combobox中,当用户选择或取消选择项目时。
https://docs.oracle.com/javase/7/docs/api/java/java/awt/awt/event/itemlistener.html#itemstatemstatechanged(java.awt.event.itememevent(
我写了一个小型演示,您可以用作参考:
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);
}
它不起作用,因为事件调度线程(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();
}