Hacer pantalla de bienvenida con barra de progreso como Eclipse.
Mi clase principal carga la configuración de un archivo y luego muestra un marco. Quiero hacer una pantalla de bienvenida con una barra de progreso como Eclipse para que el progreso aumente mientras el archivo se está cargando y la salpicadura desaparece después de que se carga el archivo. Entonces mi marco principal se carga.
Código de la clase principal:
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
}
}
No tengo mucha experiencia con Swing, así que por favor aconseje cómo lograrlo.
ACTUALIZAR: He encontrado el siguiente ejemplo, pero tiene poco problema:
cuando el contador llega al número especificado, debe detenerse en (300), sigue contando para siempre sin detener el temporizador y ocultando la pantalla de bienvenida.
Quiero vincular el contador a la carga del archivo, así que mientras se carga el archivo, el progreso se carga hasta que el archivo se carga, el progreso se completa y la pantalla de inicio desaparece.
@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
}
}
}