Как одновременно отображать заставку, а затем мой JFrame?

Я работаю над заставкой. Мне удалось сделать класс. Ниже приведен класс, который отображает заставку. Моя проблема заключается в том, что если я вызову этот класс из JFrame и запущу, JFrame и экран-заставка запустятся одновременно, и после того, как предполагается, что экран-заставка будет продолжаться, оба они будут закрыты. Как сделать так, чтобы они отображались одновременно?

Огромное спасибо

public class Splash extends JWindow {

AbsoluteLayout abs;
AbsoluteConstraints absImage, absBar;
ImageIcon image;
JLabel label;
JProgressBar bar;

public Splash() {
    abs = new AbsoluteLayout();
    absImage = new AbsoluteConstraints(0, 0);
    absBar = new AbsoluteConstraints(0, 210);
    label = new JLabel();
    image = new ImageIcon(this.getClass().getResource("anime.gif"));
    label.setIcon(image);
    bar = new JProgressBar();
    bar.setPreferredSize(new Dimension(350,10));
    this.getContentPane().setLayout(abs);
    this.getContentPane().add(label, absImage);
    this.getContentPane().add(bar, absBar);

    new Thread() {

        public void run() {
            for (int i = 0; i < 100; i++) {
                bar.setValue(i);
                try {
                    sleep(80);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Splash.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            System.exit(0);
        }
    }.start();
    this.pack();
    this.setLocationRelativeTo(null);
    this.setVisible(true);

}

}


person Sunil Shahi    schedule 19.05.2012    source источник


Ответы (2)


Как вы думаете, какой эффект

System.exit(0);

будет иметь на вашей программе? Это кувалдный способ закрыть окно, так как это приведет к выходу JVM, закрывающему все, что было запущено.

Вы смотрели на использование объекта SplashScreen, который предоставляет Java Swing?

person Hovercraft Full Of Eels    schedule 19.05.2012
comment
Я знаю, что делает эта строка кода. Я просто не нашел альтернативу, поэтому я здесь прошу помощи. Спасибо, я проверю SplashScreen в разгаре - person Sunil Shahi; 20.05.2012
comment
@da_elysian_fields: Если вы хотите, чтобы окно не отображалось, вы можете вызвать setVisible(false) в окне. Но снова System.ext(0) завершит программу без шансов на восстановление. - person Hovercraft Full Of Eels; 20.05.2012
comment
Объект SplashScreen, который предоставляет Java Swing (вежливый кашель) ITYM ..AWT предоставляет, и это лучший способ приблизиться к этому. - person Andrew Thompson; 20.05.2012
comment
это немного полезно, но как я собираюсь открыть свой JFrame только после того, как заставка выключена. - person Sunil Shahi; 20.05.2012
comment
@Andrew: но, конечно, я имел в виду AWT. Как глупо с вашей стороны неправильно прочитать вышеизложенное, чтобы подразумевать Swing. - person Hovercraft Full Of Eels; 20.05.2012
comment
@da_elysian_fields открою свой JFrame только после того, как заставка погаснет. Да, но класс SplashScreen предоставляет метод для получения URL-адреса заставки, который затем можно использовать в более поздней заставке. Дополнительные сведения см. также в разделе Как создать экран-заставку. Я думаю, что @Hov уже решил основную проблему в ответе. - person Andrew Thompson; 20.05.2012

window.dipose();

Метод dispose() закроет окно.

person vijay    schedule 26.02.2013