[SPRING] Eclipse와 같은 진행 표시 줄로 스플래시 화면 만들기
SPRINGEclipse와 같은 진행 표시 줄로 스플래시 화면 만들기
내 메인 클래스는 파일에서 구성을로드 한 다음 프레임을 표시합니다. 나는 이클립스와 같은 진행 막대가있는 스플래시 화면을 만들어서 파일이로드되는 동안 진행이 증가하고 파일이로드 된 후에 스플래시가 사라지도록하려고한다. 그러면 내 메인 프레임이로드됩니다.
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.아래 코드는 훌륭하게 작동하는 것으로 보입니다 (치명적인 결함이있는 경우 카운터가 파일 로딩 시간을 더 오래 걸릴 수 있으며 반대의 경우도 마찬가지입니다).
아래 코드는 훌륭하게 작동하는 것으로 보입니다 (치명적인 결함이있는 경우 카운터가 파일 로딩 시간을 더 오래 걸릴 수 있으며 반대의 경우도 마찬가지입니다).
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.Java는 이러한 목적으로 SplashScreen 클래스를 내장하고 있습니다. 여기에서 사용 방법에 대한 자습서가 있습니다.
Java는 이러한 목적으로 SplashScreen 클래스를 내장하고 있습니다. 여기에서 사용 방법에 대한 자습서가 있습니다.
from https://stackoverflow.com/questions/11399971/make-splash-screen-with-progress-bar-like-eclipse by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Data JPA의 CrudRepository와 JpaRepository 인터페이스의 차이점은 무엇입니까? (0) | 2018.12.13 |
---|---|
[SPRING] 최대 절전 모드 : MyInterceptor # onFlushDirty는 호출되지 않습니다. (0) | 2018.12.13 |
[SPRING] Spring-MongoDb 집계 프레임 워크에서 $ cond 연산을 사용하는 방법 (0) | 2018.12.13 |
[SPRING] Mongodb 중첩 된 배열 내부의 값 증가 (0) | 2018.12.13 |
[SPRING] Java SE + Spring 데이터 + 최대 절전 모드 (0) | 2018.12.12 |