2012-05-19 3 views
0

Я работаю над заставкой. Мне удалось создать класс. Ниже приведен класс, отображающий заставку. Моя проблема. Если я вызову этот класс из JFrame и запустим, оба экрана JFrame и Splash будут работать одновременно, а после продолжительности заставки будет продолжаться. Оба из них закрыты. Как заставить их отображать одновременно?Как одновременно отображать заставку, а затем мою 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); 

} 

}

ответ

1

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

System.exit(0); 

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

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

+0

Я знаю, что делает эта строка кода. Я просто не нашел альтернативы, поэтому я здесь прошу помощи. Спасибо, я проведу SplashScreen в swing. –

+0

@da_elysian_fields: Если вы хотите, чтобы окно не отображалось, вы можете вызвать 'setVisible (false)' в окне. Но снова 'System.ext (0)' закончит программу без шансов на восстановление. –

+1

* «Объект SplashScreen, который Java Swing предоставляет» * (вежливый кашель) ITYM * «.. AWT предоставляет« * и это лучший способ приблизиться к этому. –

Смежные вопросы