Click here to Skip to main content
15,887,945 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello, im trying to make this countdown via JFrame.

Java
package yasuharu.takanashi;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class TitanBall extends JPanel{

    
    static int FrameHeight = 1320, FrameLength = 700; //Bestemmer Højde og længde af frame.
    static int Tid = 31; //Til countdown
   
    public static void main(String[] args) throws InterruptedException 
    {
        
        
                    //Laver frame
    JFrame TitanBall = new JFrame("Yasuharu Takanashi");
    TitanBall.pack();
    TitanBall.setSize(FrameHeight, FrameLength);
    TitanBall.setVisible(true);
    TitanBall.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    new MusicIntro(); // Intro musik til "Loading screen"
   
    TitanBall StartScreen = new TitanBall();
    TitanBall.add(StartScreen);
        
     while(Tid > 0){          //Countdown
     TitanBall.validate();   
     TitanBall.repaint();     //Repainter det nye billede
     Tid--;                   //Tæller en ned
     Thread.sleep(1000);      //Stopper koden i 1 sekund. 
      }
     
    TitanBall.add(new Grafik_Bane()); //Caller banen ind.
    TitanBall.validate(); //Painter banen.
        
     new MusicIngame(); // Starter musik i spillet. 
    }
    
                // Start screen og countdown. 
    
    
    @Override
    public void paint(Graphics g)
    {
            super.paint(g);
            
            if(Tid == 30){
                // 30 sekunder
                Image StartScreen30 = Toolkit.getDefaultToolkit().getImage("StartScreen30.png");
                g.drawImage(StartScreen30, 0, 0, 1320, 700, this);
            }
            
            
            if(Tid == 29){
                // 29 sekunder
                Image StartScreen29 = Toolkit.getDefaultToolkit().getImage("StartScreen29.png");
                g.drawImage(StartScreen29, 0, 0, 1320, 700, this);
            }
            
            
            if(Tid == 28){
                // 28 sekunder
                Image StartScreen28 = Toolkit.getDefaultToolkit().getImage("StartScreen28.png");
                g.drawImage(StartScreen28, 0, 0, 1320, 700, this);
            }
            
            
            if(Tid == 27){
                // 27 sekunder
                Image StartScreen27 = Toolkit.getDefaultToolkit().getImage("StartScreen27.png");
                g.drawImage(StartScreen27, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 26){
                // 26 sekunder
                Image StartScreen26 = Toolkit.getDefaultToolkit().getImage("StartScreen26.png");
                g.drawImage(StartScreen26, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 25){
                // 25 sekunder
                Image StartScreen25 = Toolkit.getDefaultToolkit().getImage("StartScreen25.png");
                g.drawImage(StartScreen25, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 24){
                // 24 sekunder
                Image StartScreen24 = Toolkit.getDefaultToolkit().getImage("StartScreen24.png");
                g.drawImage(StartScreen24, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 23){
                // 23 sekunder
                Image StartScreen23 = Toolkit.getDefaultToolkit().getImage("StartScreen23.png");
                g.drawImage(StartScreen23, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 22){
                // 22 sekunder
                Image StartScreen22 = Toolkit.getDefaultToolkit().getImage("StartScreen22.png");
                g.drawImage(StartScreen22, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 21){
                // 21 sekunder
                Image StartScreen21 = Toolkit.getDefaultToolkit().getImage("StartScreen21.png");
                g.drawImage(StartScreen21, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 20){
                // 20 sekunder
                Image StartScreen20 = Toolkit.getDefaultToolkit().getImage("StartScreen20.png");
                g.drawImage(StartScreen20, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 19){
                // 19 sekunder
                Image StartScreen19 = Toolkit.getDefaultToolkit().getImage("StartScreen19.png");
                g.drawImage(StartScreen19, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 18){
                // 18 sekunder
                Image StartScreen18 = Toolkit.getDefaultToolkit().getImage("StartScreen18.png");
                g.drawImage(StartScreen18, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 17){
                // 17 sekunder
                Image StartScreen17 = Toolkit.getDefaultToolkit().getImage("StartScreen17.png");
                g.drawImage(StartScreen17, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 16){
                // 16 sekunder
                Image StartScreen16 = Toolkit.getDefaultToolkit().getImage("StartScreen16.png");
                g.drawImage(StartScreen16, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 15){
                // 15 sekunder
                Image StartScreen15 = Toolkit.getDefaultToolkit().getImage("StartScreen15.png");
                g.drawImage(StartScreen15, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 14){
                // 14 sekunder
                Image StartScreen14 = Toolkit.getDefaultToolkit().getImage("StartScreen14.png");
                g.drawImage(StartScreen14, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 13){
                // 13 sekunder
                Image StartScreen13 = Toolkit.getDefaultToolkit().getImage("StartScreen13.png");
                g.drawImage(StartScreen13, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 12){
                // 12 sekunder
                Image StartScreen12 = Toolkit.getDefaultToolkit().getImage("StartScreen12.png");
                g.drawImage(StartScreen12, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 11){
                // 11 sekunder
                Image StartScreen11 = Toolkit.getDefaultToolkit().getImage("StartScreen11.png");
                g.drawImage(StartScreen11, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 10){
                // 10 sekunder
                Image StartScreen10 = Toolkit.getDefaultToolkit().getImage("StartScreen10.png");
                g.drawImage(StartScreen10, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 9){
                // 9 sekunder
                Image StartScreen9 = Toolkit.getDefaultToolkit().getImage("StartScreen9.png");
                g.drawImage(StartScreen9, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 8){
                // 8 sekunder
                Image StartScreen8 = Toolkit.getDefaultToolkit().getImage("StartScreen8.png");
                g.drawImage(StartScreen8, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 7){
                // 7 sekunder
                Image StartScreen7 = Toolkit.getDefaultToolkit().getImage("StartScreen7.png");
                g.drawImage(StartScreen7, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 6){
                // 6 sekunder
                Image StartScreen6 = Toolkit.getDefaultToolkit().getImage("StartScreen6.png");
                g.drawImage(StartScreen6, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 5){
                // 5 sekunder
                Image StartScreen5 = Toolkit.getDefaultToolkit().getImage("StartScreen5.png");
                g.drawImage(StartScreen5, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 4){
                // 4 sekunder
                Image StartScreen4 = Toolkit.getDefaultToolkit().getImage("StartScreen4.png");
                g.drawImage(StartScreen4, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 3){
                // 3 sekunder
                Image StartScreen3 = Toolkit.getDefaultToolkit().getImage("StartScreen3.png");
                g.drawImage(StartScreen3, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 2){
                // 2 sekunder
                Image StartScreen2 = Toolkit.getDefaultToolkit().getImage("StartScreen2.png");
                g.drawImage(StartScreen2, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 1){
                // 1 sekunder
                Image StartScreen1 = Toolkit.getDefaultToolkit().getImage("StartScreen1.png");
                g.drawImage(StartScreen1, 0, 0, 1320, 700, this);
            }
            
            if(Tid == 0){
                // 0 sekunder
                Image StartScreen = Toolkit.getDefaultToolkit().getImage("StartScreenGameStarting.png");
                g.drawImage(StartScreen, 0, 0, 1320, 700, this);
            }
        }
    }


So here I try to paint each Image, every second with the help of the

while(Tid > 0){          //Countdown
   TitanBall.validate();
   TitanBall.repaint();     //Repainter det nye billede
   Tid--;                   //Tæller en ned
   Thread.sleep(1000);      //Stopper koden i 1 sekund.
    }



The countdown works. But everytime it switch between the next image, a white flash will occur.

What I have tried:

I have tried to use;
Java
repaint();
and
Java
validate();
more often but nothing seemed to work, and know I ran out of ideas.
Posted
Updated 21-Mar-18 23:37pm
Comments
Richard Deeming 21-Mar-18 18:20pm    
Suggestion: All of those if (Tid == x) statements would probably be better as a single switch (Tid) statement.
The switch Statement (The Java™ Tutorials > Learning the Java Language > Language Basics)[^]

Do not put all those if statements inside your paint method. And get rid of all that duplicate code, there are much simpler ways to handle a selection like that.

The paint method should only be concerned with drawing the 'current' image to the screen. You do the tests elsewhere, set the current image to the one that is selected, and force a repaint.
 
Share this answer
 
Comments
CPallini 22-Mar-18 5:37am    
5.
Maciej Los 22-Mar-18 6:03am    
5ed!
In addition to Richard suggestions, have a look at Painting in AWT and Swing[^].
 
Share this answer
 
Comments
Maciej Los 22-Mar-18 6:03am    
5ed!
CPallini 22-Mar-18 12:17pm    
Thank you very much!
Nillerh 22-Mar-18 15:16pm    
Thanks both of you. I got rid of the duplicate code, and made a function with an array that call the files. I also got rid of the flashing. Again thanks for the tips / help and the link, I will look into that
CPallini 22-Mar-18 17:01pm    
You are welcome.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900