Mi configuración de cargas de clase principal desde un archivo muestra un marco. Quiero hacer una pantalla de bienvenida con una barra de progreso como Eclipse para que el progreso aumente mientras se carga el archivo y el mensaje desaparece después de cargar el archivo. Entonces mi cuadro principal se carga.Hacer pantalla de bienvenida con barra de progreso como Eclipse
código 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
}
}
no tengo mucha experiencia con Swing, por lo que por favor avise cómo lograr eso.
ACTUALIZACIÓN: he encontrado el siguiente ejemplo, pero tienen poca emisión:
cuando el contador llega al número especificado se debe dejar al (300) se mantiene contando para siempre sin parar el temporizador y ocultar la pantalla de bienvenida.
quiero vincular el contador a la carga del archivo, por lo que mientras se carga el archivo, el progreso se carga hasta que el archivo se carga y luego se completa el progreso y la pantalla de bienvenida 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 } } }
¿Revisó [esta pregunta] (http://stackoverflow.com/questions/2089359/java-6-splash-screen?rq=1)? Tiene algunos buenos enlaces. –