java - 多个 JLabel 上的鼠标监听器

标签 java swing jlabel mouselistener

我创建了一些动态JLabels,并为每个标签添加了MouseLister。现在的问题是我如何检测我点击了哪个JLabel? 这是我的代码。

    int c1=40;
    setLayout(null);
    jPanel1.setSize(new Dimension(500, 200));
    jPanel1.setLayout(new GridLayout(4, 10));
        JLabel[] jl = new JLabel[c1];
    for(int i=c1-1; i>=0; i--){
        jl[i] = new JLabel();
        //jl.setText("O");
        jl[i].setPreferredSize(new Dimension(20,20));
        jl[i].setIcon(new ImageIcon(NewJFrame.class.getResource("booked.png")));
        jl[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        jPanel1.add(jl[i]);
        jl[i].addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent me){

            }
    });
    }

最佳答案

对于每个 JLabel,您要添加一个新的/单独的 MouseAdapter 对象

 jl[i].addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent me){

        }
});

因此在 mousePressed 事件中调用 me.getComponent() 应该返回标签对象

jl[i].addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent me){
                   //Better to check if its returning JLabel obejct using instance of
                   JLabel c = (JLabel) me.getComponent();
            }
    });

关于java - 多个 JLabel 上的鼠标监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130389/

相关文章:

java - 递归冒泡排序与普通冒泡排序

java - 从 maven-antrun-plugin 调用 ant 脚本时出现 IllegalAccessError

Java Standalone 可运行的 GUI 应用程序 - 无法获取 jar 文件来打开程序

java - 调整框架大小时,JLabel 的位置更改为奇怪的位置

java - 通过单击按钮同时显示图像和文本字符串

java - 在构建文件崩溃应用程序中使用 Multidex 启用 True 并出现空指针异常

java - 尝试更改卡的值(value)

java - 单击鼠标添加图像? Java小程序

java - Swing 中使用的框架图标的大小

Java 按钮 Action 监听器会触发其他监听器吗?