2011-01-19 61 views
1

我想在JLabel中有一個可點擊的圖標(一個ImageIcon對象)。我怎樣才能添加一個MouseListener或任何ActionListener只是該圖標。有沒有其他的方式知道圖標是否被點擊?我使用setIcon()方法爲JLabel設置其圖標。如何將鼠標監聽器添加到JLabel中嵌入的ImageIcon中?

謝謝。

+1

爲什麼不用`Icon`的`JButton`? – trashgod 2011-01-19 00:56:31

+0

相關:http://stackoverflow.com/questions/1281612/adding-a-child-component-to-a-jbutton – finnw 2011-01-19 01:03:18

+0

JButton的圖標的確對鼠標事件做出響應,而JLabel的圖標不會「T。 – 2015-08-02 20:11:02

回答

2

您可以在容器中放置兩個單獨的JLabel,第一個放置文本,第二個放置圖標,然後將鼠標偵聽器添加到圖標JLabel。

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

}

1

這種方法非常哈克,但爲我工作。

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(); 
      } 
     } 
    }); 
相關問題