繁体   English   中英

如何将鼠标侦听器添加到JLabel中嵌入的ImageIcon?

[英]How to add Mouse listener to an ImageIcon embedded in a JLabel?

我想在JLabel中有一个可单击的图标(一个ImageIcon对象)。 如何将MouseListener或任何ActionListener添加到该图标。 还有其他方法可以知道是否已单击图标吗? 我为JLabel使用setIcon()方法来设置其图标。

谢谢。

您可以在容器内有两个单独的JLabel,第一个包含文本,第二个仅包含图标,然后向图标JLabel添加鼠标侦听器。

这种方法很hacky,但对我有用。

    JLabel.addMouseListener(new MouseAdapter(){
        public void mousePressed(MouseEvent me){
            try {
                Robot robot = new Robot();
                if(JLabel.getBounds().contains(me.getPoint()) && !robot.getPixelColor(me.getXOnScreen(),me.getYOnScreen()).equals(page.getBackground())){
                    //Do action here
                }
            } catch (AWTException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
        }
    });

您可以使用以下代码来解决您的问题:

public  class Test extends JFrame {
    private JLabel label;
    ImageIcon icon = new ImageIcon("example.gif");
    public Test(){
        label = new JLabel(icon);
        label.addMouseListener(new MouseListener() {

        public void mouseClicked(MouseEvent e) {
        //for example    
            JOptionPane.showMessageDialog(null, "Hello");

        }

        public void mousePressed(MouseEvent e) {
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
        }

        public void mouseExited(MouseEvent e) {
        }
    });
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM