当在标签上单击鼠标时,我想要一个带有图标的JLabel看起来“点击”。 Label包含一个ImageIcon。我没有将图标更改为另一个图标,而是想用另一个colorset重绘ImageIcon(例如:setXORMode(new Color(255,0,0))“。任何人都有提示如何管理它?
JLabel my_label = new JLabel("");
my_label.setIcon(new ImageIcon(MyClass.class.getResource("/path/to/resources/myicon.jpg")));
my_label.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
//HERE I NEED THE VODOO :)
}
});
答案 0 :(得分:2)
我会使用LookupOp
修改图标的副本。然后在鼠标处理程序中使用setIcon()
。
答案 1 :(得分:2)
假设你从磁盘读取图像,你会做这样的事情。
URL url = getClass().getResource("images/BB.jpg");
BufferedImage picture = ImageIO.read(url);
稍后当您需要更改XOrMode时,您将执行以下操作:
Graphics2D g = picture.createGraphics();
g.setXORMode(new Color(255,0,0) )
g.dispose();
如果你想淡化/淡出,我建议使用timing framework。此外,如果除了标签中的图像之外还要重新绘制标签本身的部分,则可以覆盖void paintComponent(Graphics g)
。
您可能会考虑研究的一个非常好的资源是书Filthy Rich Clients。它充满了这种东西。如果您查看第4章网站上的示例,可能会有一些示例图像代码。这本书对你来说也是一本非常非常好的书。