JLabel图像淡出一种颜色

时间:2015-04-24 09:26:31

标签: java swing

我正在创建一个应该能够读取给定目录中的文件然后在全屏无边框窗口中显示所有图像文件的应用程序,它还应该显示文本文件,但我尚未启动该部分,所以不要紧, system.out部分。到目前为止,我已经制作了JFrame全屏和无边界,并且我做了一个包含我想要显示的文件的Arraylist。然后我在构造函数中添加一个带有文件的jpanel,这个jpanel将图片添加到jlabel并显示它,之后我删除了jpanel并重新开始下一张图片。

我需要的是一种方法,使图像从给定的颜色淡入,然后淡出到相同的颜色。

这是我添加面板并再次删除它们的地方

URL GOTO=javascript:document.getElementsByClassName("input").innerHTML="Hello World";

这是JPanel

for (File f : files) {
        String fileName = f.getName();
        if (fileName.endsWith(".txt")) {
            System.out.println("Txt");
            System.out.println(fileName);
            System.out.println("--");
        } else if (fileName.endsWith(".png") || fileName.endsWith(".jpg") || fileName.endsWith("bmp")) {
            AlbumPanel albumpan = new AlbumPanel(connect, f, this);
            add(albumpan, BorderLayout.CENTER);
            pack();
            try {
                Thread.sleep(current.getFormat().getPicLength()*1000);

            } catch (InterruptedException ex) {
            }
            remove(albumpan);
        }
    }

2 个答案:

答案 0 :(得分:1)

覆盖您正在使用的控件上的渲染方法(可能是paintComponent)。调用super.paintComponent,然后在其上绘制一个半透明的“淡出”颜色矩形。

paintComponent内,您传递了Graphics个对象。该对象上的方法可用于执行操作,包括在屏幕上绘制矩形。您可能需要fillRect

完全显示图像时选择不透明度为0,然后在图像完全淡出时移向1。

你需要定期触发重绘的东西(Swing Timer可能已经足够了)。

答案 1 :(得分:1)

您可以使用Color的透明度(最后一个变量为alpha的构造函数public Color(int r, int g, int b, int a)

启动计时器并将颜色的透明度从0更改为255,然后使用颜色填充图像(或面板)。