Как остановить таймер на java и выполнить только один раз? - PullRequest
0 голосов
/ 08 марта 2020

Я делаю экран 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;

}
...