1

似乎有很多类似的问题,但它们实现了不同的代码......这只是基本代码,所以我觉得我在做一些非常奇怪/错误的事情。这就是我的代码的样子。GIF 是透明的和动画的,如果这改变了事情的话。

import java.awt.*;
import javax.swing.*;
public class NewClass extends JFrame {
    private JLabel label;
    private JButton button;
    private JTextField textfield;
    private ImageIcon image;
    private JLabel label1;
    private ImageIcon imaged;
    private JLabel label2;

    public NewClass (){
        setLayout(new FlowLayout());

        label = new JLabel("Hi, I am a label!");
        add(label);
        image = new ImageIcon(getClass().getResource("sprite15_2_1.gif"));
        label1 = new JLabel(image);
        add(label1);
         imaged = new ImageIcon(getClass().getResource("sprite2_1_1.gif"));
        label2 = new JLabel(imaged);
        add(label2);
        label1.setDoubleBuffered(true);
        label2.setDoubleBuffered(true);
        textfield = new JTextField(15);
        add (textfield);

        button = new JButton("aight");
        add(button);
    }
    public static void main (String args[]){

    NewClass gui = new NewClass();
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gui.pack();
    gui.setVisible(true);
    gui.setTitle("Elan Vital");
    }
}

编辑以包含完整代码。这只是一个简单的程序。

闪烁的 GIF (sprite15_2_1.gif):

闪烁的 GIF

sprite_2_1_1.gif 完美显示,但 sprite15_2_1.gif 的下半部分闪烁白色。我不知道有什么不同我:“。我已经仔细检查了 gif 以确保文件本身没有问题......

4

2 回答 2

0

尝试启用双缓冲:

label1.setDoubleBuffered(true);
label2.setDoubleBuffered(true);

有关更多信息,请参阅Component.setDoubleBuffered上的 javadoc 。

于 2013-05-22T18:26:11.273 回答
0

gif文件确实有问题。

使用以下任意一张图片代替您发布的图片。Double buffering没有必要。

图像已在 Photoshop 中进行了更正。有一些冗余帧可能导致闪烁,但令人惊讶的事实是图像在所有图像查看器上都能正确显示,但在 Java 中却没有。所以可能是java错误。

在此处输入图像描述

在此处输入图像描述

第一个图像有点快,第二个图像慢了 0.2 秒。使用任何一种。

于 2013-05-23T06:08:55.060 回答