我希望当在Label上单击鼠标时,带有Icon的JLabel看起来“被单击”。标签包含一个ImageIcon。我不想将图标更改为另一个图标,而是想重新绘制具有另一种颜色集的ImageIcon(例如:setXORMode(new Color(255,0,0))“fly”。有人提示如何管理该图标吗?

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

最佳答案

假设您从磁盘读取映像,您将执行以下操作。

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章的网站上查看示例,则可能有一些示例图像代码可能有用。对于您来说,这也是一本非常非常好的书。

关于java - 在SWING JLabel中快速点击淡入/重画/修改ImageIcon,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3271956/

10-10 20:02