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

时间:2011-01-19 00:46:07

标签: java swing jlabel

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

感谢。

3 个答案:

答案 0 :(得分:2)

你可以在一个容器中有两个独立的JLabel,第一个带有文本,第二个带有图标,并且将鼠标监听器添加到图标JLabel。

答案 1 :(得分:1)

这种方法非常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();
            }   
        }
    });

答案 2 :(得分:-4)

您可以使用此代码解决问题:

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) {
        }
    });
}

}