0

我需要知道如何有效地将鼠标事件添加到 JComboBox 或任何其他有效的方法。我在这里和不同的站点找到了一些可能的解决方案,但我无法让它工作。似乎 mouseEvent 不适合在 JComboBox 上使用,因为它是一个复合组件。我找到了复合组件的可能解决方案,但也不起作用。所以下面是我使用文本字段时的代码。关于我应该使用哪种方法的任何想法?谢谢

    private void updateReviewers() {
        jComboBox_reviewer.addMouseListener(new MouseListener() {

        @Override
        public void mouseClicked(MouseEvent e) {
            System.out.println("clicked");
        }

        @Override
        public void mousePressed(MouseEvent e) {
            System.out.println("pressed");
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            System.out.println("released");
        }

        @Override
        public void mouseEntered(MouseEvent e) {
            System.out.println("entered");
        }

        @Override
        public void mouseExited(MouseEvent e) {
            System.out.println("exited");
        }

    }
    );

}
4

2 回答 2

1

您应该能够addActionListener(ActionEvent e)在 JComboBox 本身上使用。一旦选择了任何项目,您就可以在动作侦听器中执行任何类型的验证。

jcomboBox.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e)
        {
            JComboBox comboBox = (JComboBox) event.getSource();
            Object o = comboBox.getSelectedItem();
            //Any extra code
        }
    });  

当然,Object可以强制转换为您想要的 Object 类型。

使用 JComboBox 处理事件的Oracle 文档

于 2015-04-04T10:24:13.860 回答
0

它是一个创建 JComboBox 并创建一个字符串数组并使用这些数组项并创建 ComboBox 的列表项的程序。然后将每个项目与图像链接。然后我们启动 Action Listener 并为每个列表项提供一个操作。请注意,您必须将图像保存在项目的源文件夹和类文件夹中。

package JComboBox;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    /*<applet code="JComboBoxDemo" width=200 height=120></applet>
     */

    public class JComboBoxDemo extends JApplet
    {

        JLabel jlab;
        ImageIcon hourglass, digital, analog, stopwatch;
        JComboBox <String> jcb;
        String timepieces[] = {"Digital", "Analog", "Hourglass",  "Stopwatch"};
        String s;

        public void init()
        {
            try {
                SwingUtilities.invokeAndWait(new Runnable() {

                    public void run() {

                        makeGUI();
                    }
                });
            }

            catch(Exception exc)
            {
                System.out.println("Program can't run because of "+exc);
            }
        }

        private void makeGUI()
        {
            setLayout(new FlowLayout());
            jcb = new JComboBox<String>(timepieces);
            add(jcb);

            jcb.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent ae) {

                    s = (String) jcb.getSelectedItem();
                    jlab.setIcon(new ImageIcon(s + ".jpg"));
                }
            });

                jlab = new JLabel(new ImageIcon());
                add(jlab);
        }
    }
于 2017-06-29T15:38:26.773 回答