代码之家  ›  专栏  ›  技术社区  ›  Honey

在标签上显示列表选定值

  •  0
  • Honey  · 技术社区  · 8 年前

    谢谢你的帮助。

    public void itemStateChanged(ItemEvent ie)
    {
        String data = objectOfList.getSelectedItem();
        objectOfLabel.setText("selected item: " + data);
    }
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Luciano van der Veekens    8 年前

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

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

    我写了一个小演示,你可以作为参考:

    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);
    }
    
        2
  •  0
  •   Sky vinS    8 年前

    它不起作用,因为事件调度线程(Java GUI线程)正忙于执行内部代码 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();
    }