我想在JLabel中有一個可點擊的圖標(一個ImageIcon對象)。我怎樣才能添加一個MouseListener或任何ActionListener只是該圖標。有沒有其他的方式知道圖標是否被點擊?我使用setIcon()方法爲JLabel設置其圖標。如何將鼠標監聽器添加到JLabel中嵌入的ImageIcon中?
謝謝。
我想在JLabel中有一個可點擊的圖標(一個ImageIcon對象)。我怎樣才能添加一個MouseListener或任何ActionListener只是該圖標。有沒有其他的方式知道圖標是否被點擊?我使用setIcon()方法爲JLabel設置其圖標。如何將鼠標監聽器添加到JLabel中嵌入的ImageIcon中?
謝謝。
您可以在容器中放置兩個單獨的JLabel,第一個放置文本,第二個放置圖標,然後將鼠標偵聽器添加到圖標JLabel。
您可以使用此代碼來解決你的問題:
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) {
}
});
}
}
這種方法非常哈克,但爲我工作。
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();
}
}
});
爲什麼不用`Icon`的`JButton`? – trashgod 2011-01-19 00:56:31
相關:http://stackoverflow.com/questions/1281612/adding-a-child-component-to-a-jbutton – finnw 2011-01-19 01:03:18
JButton的圖標的確對鼠標事件做出響應,而JLabel的圖標不會「T。 – 2015-08-02 20:11:02