Как добавить слушателя мыши в ImageIcon, встроенный в JLabel? - PullRequest
1 голос
/ 19 января 2011

Я хочу, чтобы внутри JLabel был кликабельный значок (объект ImageIcon).Как я могу добавить MouseListener или любой ActionListener только к этому значку.Есть ли другой способ узнать, был ли нажат значок?Я использую метод setIcon () для JLabel, чтобы установить его значок.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 19 января 2011

Вы можете иметь два отдельных JLabel внутри контейнера, первый с текстом, второй только с иконкой, и добавить слушателя мыши к иконке JLabel.

1 голос
/ 21 января 2014

Этот метод очень хакерский, но работал для меня.

    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();
            }   
        }
    });
0 голосов
/ 20 января 2011

Вы можете использовать этот код для решения вашей проблемы:

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

}

...