代码之家  ›  专栏  ›  技术社区  ›  Erik

淡入淡出/重画/修改图像图标单击“快速旋转”jLabel

  •  3
  • Erik  · 技术社区  · 14 年前

    当鼠标点击标签时,我想要一个带有图标的jLabel看起来像是“点击”。标签包含一个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 回复  |  直到 14 年前
        1
  •  2
  •   Jay Askren    14 年前

    假设您从磁盘读取图像,您将执行类似的操作。

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

        2
  •  2
  •   trashgod    14 年前

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