java - 在 SWING JLabel 中动态单击淡化/重绘/修改 ImageIcon

标签 java swing icons jlabel

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

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/

相关文章:

objective-c - osx 应用程序红色橙色绿色图标

java - 如何在 ActiveMQ Artemis 集群中启用 REST

java - 将退出按钮转换为重置按钮

java - JFrame 不在 Intellij 中显示 JMenuBar

java - 在 JDesktopPane 中添加一个类

css - 无法使用图标从 UL 列表中删除元素符号点

java - 如何解析 JSON 数组以更新 postgreSQL 中的记录

java - 试图理解 subscribeActual()

java - Restful webservices....放置或发布更新

256x256 的 Android 设计图标