我正在尝试在java中创建一个加载器屏幕。到目前为止,我已成功为我的程序制作启动画面,启动画面工作正常。 我使用相同的代码来创建加载器,但是当我调用对象时,只有睡眠部分工作,我的意思是屏幕上没有真正出现。
public class IL extends JWindow {
Image L=Toolkit.getDefaultToolkit().getImage("L.png");
ImageIcon LI=new ImageIcon(L);
public IL (){
try
{
setSize(LI.getIconWidth(),LI.getIconHeight());
setLocationRelativeTo(null);
show();
Thread.sleep(10000);
dispose();
}
答案 0 :(得分:2)
您正在使用sleep
阻止UI线程,从根本上阻止它显示任何内容。
你应该使用计时器。请参阅How to Use Swing Timers和Swing Timer
API文档。您可以使用计时器在您需要的时间之后进行隐藏/处置。您还可以使用该计时器显示进度条或为加载页面设置动画。
答案 1 :(得分:1)
因为我有一个方便,完整的实施。
import java.awt.Image;
import java.awt.event.*;
import javax.swing.*;
import java.net.URL;
import javax.imageio.ImageIO;
public class Splash extends JWindow {
public Splash(Image image, int millis){
ImageIcon icon=new ImageIcon(image);
add(new JLabel(icon));
pack();
setLocationRelativeTo(null);
ActionListener hideAction = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
dispose();
}
};
Timer timer = new Timer(millis, hideAction);
setVisible(true);
timer.start();
}
public static void main(String[] args) throws Exception {
final Image image = ImageIO.read(
new URL("http://pscode.org/media/stromlo2.jpg"));
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Splash(image, 6000);
}
});
}
}