除非我单击窗口标题,否则 JLabel 无法正常工作



我有一个程序,我试图显示一个图像,5秒后它从JLabel中删除图像,然后显示第二张图像,但第二张图像不会自行显示,除非我单击标题或程序创建的窗口顶部的栏。我想有图像显示自动没有我与窗口交互。任何帮助吗?

public void pictures(){
try{
BufferedImage myPicture = ImageIO.read(new File("round-1.jpg"));
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
picLabel.setSize(800,600);
add(picLabel);
picLabel.setVisible(true);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run(){
picLabel.setVisible(false);
pictures2();
}
}, 5000);
}
catch(IOException e){
e.printStackTrace();
}
}
public void pictures2(){
try{
BufferedImage myPicture2 = ImageIO.read(new File("go.png"));
JLabel picLabel2 = new JLabel(new ImageIcon(myPicture2));
picLabel2.setSize(800,600);
add(picLabel2);
picLabel2.setVisible(true);
}
catch(IOException e){
e.printStackTrace();
}
}

也许是因为计时器任务的工作(运行方法)在单独的线程中运行,而不是在Swing事件处理线程中?

我怀疑你应该在定时器的运行方法中调用SwingUtilities.invokeLater,以便在Swing事件处理线程中完成对标签的更改。

相关内容

  • 没有找到相关文章

最新更新