gibi ilerleme çubuğuyla açılış ekranı hazırlayın Ana sınıf yüklerimi bir dosyadan yapılandırma yükler ve sonra bir çerçeve gösterir. Eclipse gibi bir ilerleme çubuğu ile bir sıçrama ekranı yapmak istiyorum böylece dosya yüklenirken ilerleme artacak ve dosya yüklendikten sonra sıçrama kaybolur. Sonra ana çerçevem yüklenir.Eclipse
MainClass kodu:
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
}
}
yüzden bunu başarmak için nasıl tavsiye lütfen, Swing ile çok deneyimi yok. o durmadan sonsuza dek sayım devam ediyor sayaç belirtilen numaraya aldığında
o (300) durdurmak gerekir:
GÜNCELLEME: i aşağıdaki örnek bulduk ama biraz sorun var zamanlayıcı ve açılış ekranını gizleme.
Sayacı dosya yüklemesine bağlamak istiyorum, bu nedenle dosya yüklendiğinde, dosya yüklenene kadar ilerleme kaydediliyor, ilerleme tamamlanacak ve açılış ekranı kayboluyor.
@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 } } }
Bazı harika eğitim ve açıklamalar için bkz. here [bu soru] 'ya göz attınız mı (http://stackoverflow.com/questions/2089359/java-6-splash-screen?rq=1)? Bazı iyi bağlantıları var. –