-1

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();  
} 
4

2 に答える 2

2

それでUIスレッドをブロックしsleep、本質的に何も表示されないようにします。

これにはタイマーを使用する必要があります。Swingタイマーの使用方法とSwingAPIのドキュメントを参照してくださいTimer。タイマーを使用して、必要な時間の後に非表示/破棄を実行します。そのタイマーを使用して、プログレスバーを表示したり、ローダーページをアニメーション化したりすることもできます。

于 2012-05-20T10:14:19.590 に答える
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);
            }
        });
    }
}
于 2012-05-20T10:33:59.280 に答える