Chaning Jframe图像

时间:2015-10-18 09:53:22

标签: java image jframe

所以我很难在Jframe image / icon中实现更改。我正在使用for循环,并希望将Jframe的图像更改为我检索到的相应图像,但我要么将其粘贴在第一帧,要么它们只是堆积在一起。我看过网上但他们只展示了如何最初改变Jframe,而不是for循环。

这是我的代码的一部分:

JFrame frame = new JFrame();

for(int frameNum = 0; frameNum < fg.getLengthInFrames(); frameNum++) {

        ImageIcon icon = new ImageIcon(img);
        JLabel label = new JLabel(icon);
        frame.add(label);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // close canvas once the window is closed
        frame.pack();
        frame.setVisible(true); 

}

2 个答案:

答案 0 :(得分:1)

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test{
    public static void main(String[] args) {
        for(int frameNum = 0; frameNum <=4; frameNum++) {
            JFrame frame = new JFrame();
                ImageIcon icon = new ImageIcon("G:/Skypecartoons/we.jpg");
                JLabel label = new JLabel(icon);
                frame.add(label);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // close canvas once the window is closed
                frame.pack();
                frame.setVisible(true); 
        }
    }


}

答案 1 :(得分:0)

如果您想要随时间更改图标,您需要等待一段时间才能让用户看到图标。您需要先设置框架,然后才更改图标。

// setup first    
JFrame frame = new JFrame();
ImageIcon icon = new ImageIcon(img);
JLabel label = new JLabel(icon);
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // close canvas once the window is closed
frame.pack();
frame.setVisible(true);

...

// show the frames.
for(int frameNum = 0; frameNum < fg.getLengthInFrames(); frameNum++) {
        final ImageIcon nextIcon = new ImageIcon(img);
        java.awt.EventQueue.invokeLater(() -> {
            label.setIcon(nextIcon);
        });
        Thread.sleep(500);
}