所以我很难在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);
}
答案 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);
}