我尝试制作一个程序,显示图像 3 秒,然后切换它,但不是显示第一个图像,而是等待,然后显示第二个图像,而是等待显示第一个图像,然后显示第二个图像,谢谢您的帮助
JLabel image = new JLabel("");
image.setBounds(100, 20, 125, 200);
contentPane.add(image);
image.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
image.setIcon(one);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
image.setIcon(two);
}
});
最佳答案
尝试这样的事情:
image.setIcon(one);
javax.swing.Timer timer = new Timer(3000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
image.setIcon(two);
timer.stop();
}
});
确保使用 javax.swing.Timer 而不是 java.util.Timer,因为您正在更新 Swing UI 组件。 Swing Timer 在事件调度线程 (EDT) 上执行其回调。
话虽如此,请考虑使用 SwingWorker对于长时间运行的任务(即,如果示例中的图像文件很大)。 docs建议仅使用上述方法执行小/短任务。
关于java - 我尝试显示图像 3 秒,然后切换到 java gui,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840564/