Я делаю экран spla sh с помощью GIF (я буду использовать его в качестве экрана загрузки для моей другой программы). Я уже добавил к нему таймер, а также следующий JFrame, где он будет go, и он работает, однако он каким-то образом зацикливает объявление внутри него. Вместо того, чтобы открывать следующий JFrame только один раз, он продолжает открывать второй кадр навсегда, когда он достигает каждые 2000 (2se c). Как я могу запустить таймер только один раз?
import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.Timer;
import librarySystemPackage.LibrarySystem;
public class LoadingGIF extends javax.swing.JFrame {
private Timer timer = null;
public LoadingGIF() {
initComponents();
B.setOpaque(true);
B.setBackground(new Color(55,55,55));
timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Co");
LibrarySystem librarySystem = new LibrarySystem();
librarySystem.setVisible(true);
dispose();
}
private void setVisible(boolean b) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
timer.start();
}
@SuppressWarnings("unchecked")
private void initComponents() {
B = new javax.swing.JPanel();
lblGIF = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setUndecorated(true);
setResizable(false);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
B.setForeground(new java.awt.Color(51, 102, 255));
lblGIF.setIcon(new javax.swing.ImageIcon(getClass().getResource("/loadinggif/GIF.gif"))); // NOI18N
javax.swing.GroupLayout BLayout = new javax.swing.GroupLayout(B);
B.setLayout(BLayout);
BLayout.setHorizontalGroup(
BLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(BLayout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(lblGIF)
.addContainerGap(33, Short.MAX_VALUE))
);
BLayout.setVerticalGroup(
BLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(BLayout.createSequentialGroup()
.addComponent(lblGIF, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 128, Short.MAX_VALUE))
);
getContentPane().add(B, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 620, 300));
pack();
setLocationRelativeTo(null);
}
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(LoadingGIF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(LoadingGIF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(LoadingGIF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(LoadingGIF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LoadingGIF().setVisible(true);
}
});
}
private javax.swing.JPanel B;
private javax.swing.JLabel lblGIF;
}