복붙노트

[SPRING] Eclipse와 같은 진행 표시 줄로 스플래시 화면 만들기

SPRING

Eclipse와 같은 진행 표시 줄로 스플래시 화면 만들기

내 메인 클래스는 파일에서 구성을로드 한 다음 프레임을 표시합니다. 나는 이클립스와 같은 진행 막대가있는 스플래시 화면을 만들어서 파일이로드되는 동안 진행이 증가하고 파일이로드 된 후에 스플래시가 사라지도록하려고한다. 그러면 내 메인 프레임이로드됩니다.

MainClass 코드 :

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
  }
}

스윙에 대한 많은 경험이 없으므로이를 수행하는 방법을 알려주십시오.

업데이트 : 나는 다음 예제를 발견했지만 약간의 문제가 있습니다 :

해결법

  1. ==============================

    1.아래 코드는 훌륭하게 작동하는 것으로 보입니다 (치명적인 결함이있는 경우 카운터가 파일 로딩 시간을 더 오래 걸릴 수 있으며 반대의 경우도 마찬가지입니다).

    아래 코드는 훌륭하게 작동하는 것으로 보입니다 (치명적인 결함이있는 경우 카운터가 파일 로딩 시간을 더 오래 걸릴 수 있으며 반대의 경우도 마찬가지입니다).

    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.HeadlessException;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    public class SplashScreen extends JWindow {
    
        static boolean isRegistered;
        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);
        }
    
        private void loadProgressBar() {
            ActionListener al = new ActionListener() {
    
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    count++;
    
                    progressBar.setValue(count);
    
                    System.out.println(count);
    
                    if (count == 300) {
    
                        createFrame();
    
                        execute.setVisible(false);//swapped this around with timer1.stop()
    
                        timer1.stop();
                    }
    
                }
    
                private void createFrame() throws HeadlessException {
                    JFrame frame = new JFrame();
                    frame.setSize(500, 500);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setVisible(true);
                }
            };
            timer1 = new Timer(50, al);
            timer1.start();
        }
    
        public static void main(String[] args) {
            execute = new SplashScreen();
        }
    };
    

    ProgressMonitor와 ProgressMonitorInputStream을 살펴보고 파일을 완전히 읽었을 때 확인할 수있는 SplashScreen을 끝내십시오. 훌륭한 튜토리얼 및 설명을 보려면 여기를 참조하십시오.

  2. ==============================

    2.Java는 이러한 목적으로 SplashScreen 클래스를 내장하고 있습니다. 여기에서 사용 방법에 대한 자습서가 있습니다.

    Java는 이러한 목적으로 SplashScreen 클래스를 내장하고 있습니다. 여기에서 사용 방법에 대한 자습서가 있습니다.

  3. from https://stackoverflow.com/questions/11399971/make-splash-screen-with-progress-bar-like-eclipse by cc-by-sa and MIT license