在动态点击SWING JLabel时淡入/重绘/修改ImageIcon

时间:2010-07-17 14:47:43

标签: java swing icons jlabel

当在标签上单击鼠标时,我想要一个带有图标的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 :)
    }
});

2 个答案:

答案 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章网站上的示例,可能会有一些示例图像代码。这本书对你来说也是一本非常非常好的书。