Machen splash screen mit progress bar wie Eclipse

Meine main-Klasse lädt die Konfiguration aus einer Datei und zeigt dann einen Rahmen. Ich will ein splash screen mit progress-bar wie Eclipse, so dass der Fortschritt zunehmen wird, während die Datei wird geladen und der splash verschwindet nachdem die Datei geladen ist. Dann ist mein Haupt-frame geladen wird.

MainClass code:

public static void main(String[] args) {
  ApplicationContext context = new ClassPathXmlApplicationContext(
    "classpath:/META-INF/spring/applicationContext.xml");
  //splash with progress load till this file is loaded
  UserDao userDao = context.getBean(UserDao.class);
  isRegistered = userDao.isRegistered();
  System.out.println("registered: " + isRegistered);
  if (isRegistered) {
    //progress finish and hide splash
    log.debug("user is registered"); //show frame1
  } else {
    //progress finish and hide splash
    log.debug("user is not registered"); //show frame2
  }
}

Ich habe nicht viel Erfahrung mit Swing, also bitte beraten, wie Sie erreichen, dass.

UPDATE: ich habe mit der folgenden Beispiel -, aber Sie haben wenig Ausgabe:

  • wenn der Zähler bekommt die angegebene Nummer, es sollte aufhören, bei (300) es hält zählen, für immer, ohne zu stoppen, den timer und ausblenden des splash-screen.

  • ich soll binden die Theke, um die Datei zu laden, so dass, während die Datei geladen wird, wird der Fortschritt wird geladen, bis die Datei geladen wird dann der Fortschritt abgeschlossen ist und der splash screen verschwindet.

    @SuppressWarnings("serial")
    @Component
    public class SplashScreen extends JWindow {
    
        static boolean isRegistered;
    
        static Log log = LogFactory.getLog(SplashScreen.class);
    
        private static JProgressBar progressBar = new JProgressBar();
        private static SplashScreen execute;
        private static int count;
        private static Timer timer1;
    
        public SplashScreen() {
    
            Container container = getContentPane();
            container.setLayout(null);
    
            JPanel panel = new JPanel();
            panel.setBorder(new javax.swing.border.EtchedBorder());
            panel.setBackground(new Color(255, 255, 255));
            panel.setBounds(10, 10, 348, 150);
            panel.setLayout(null);
            container.add(panel);
    
            JLabel label = new JLabel("Hello World!");
            label.setFont(new Font("Verdana", Font.BOLD, 14));
            label.setBounds(85, 25, 280, 30);
            panel.add(label);
    
            progressBar.setMaximum(50);
            progressBar.setBounds(55, 180, 250, 15);
            container.add(progressBar);
            loadProgressBar();
            setSize(370, 215);
            setLocationRelativeTo(null);
            setVisible(true);
        }
    
        public void loadProgressBar() {
            ActionListener al = new ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    count++;
                    progressBar.setValue(count);
                    if (count == 300) {
                        timer1.stop();
                        execute.setVisible(false);
                        return;
                    }
                }
            };
            timer1 = new Timer(50, al);
            timer1.start();
        }
    
        public static void main(String[] args) {
    
            execute = new SplashScreen();
    
            ApplicationContext context = new ClassPathXmlApplicationContext(
                    "classpath:/META-INF/spring/applicationContext.xml");
    
            UserDao userDao = context.getBean(UserDao.class);
    
            isRegistered = userDao.isRegistered();
    
    
            if (isRegistered) {
                 //show frame 1
            } else {
                                                        //show frame 2
    
            }
    
        }
    
    }
  • Haben Sie check out diese Frage? Es hat einige gute links.
Schreibe einen Kommentar