3

当鼠标单击标签时,我希望带有图标的 JLabel 看起来“被点击”。标签包含一个 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 :)
    }
});
4

2 回答 2

2

我会LookupOp在加载图标时用来修改图标的副本。然后setIcon()在鼠标处理程序中使用。

于 2010-07-17T17:01:53.620 回答
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();

如果你想淡入/淡出,我推荐时间框架。另外,如果除了标签中的图像之外,您还想重新绘制标签本身的部分,您可以覆盖void paintComponent(Graphics g).

您可能会考虑研究的一个非常好的资源是《肮脏的富客户》一书。它充满了这种东西。如果您查看第 4 章网站上的示例,就会有一些示例图像代码可能有用。这将是一本非常非常好的书,你也可以拿起。

于 2010-07-17T17:38:25.077 回答