Anfänger Problem mit Thread.sleep()

Status
Nicht offen für weitere Antworten.

el_vital

Aktives Mitglied
Ich möchte ein Bild anzeigen lassen, danach sagen wir mal 2000ms Pause und danach sollen die weiteren Anweisungen ausgeführt werden.

Es sieht bei mir so aus:

Code:
public void gameOver(){
         panelHead2.removeAll();
         JLabel feld2 = new JLabel(new ImageIcon(getClass().getResource("GameOver.jpg")));
         feld2.setLayout (new FlowLayout (FlowLayout.LEFT, 0, 0));
         panelHead2.add(feld2);
         repaint();
         validate();
         System.out.println("vor Der Pause");
       	 try {
          		   Thread.sleep(2000);     
       	  } catch (InterruptedException ex) {}
         System.out.println("Nach der Pause");
     }


Die Konsole-Ausgabe funktioniert, es kommt die Meldung “Vor der Pause” und nach 2000ms “Nach der Pause”. Das Bild GameOver.jpg wird aber nicht eingeblendet sondern irgendwie übersprungen. Nehme ich die Verzögerung raus, so wird das Bild angezeigt.
Es scheint so als ob der Thread noch vor dem darstellen des Bildes einschläft.

Wie macht man so was richtig??
 

André Uhres

Top Contributor
Code:
...
public class TimerDemo extends JFrame implements ActionListener{
...
    public void gameOver(){
...
        timer = new Timer(2000, this);
        timer.start();
        System.out.println("vor Der Pause");
    }
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == timer){
            timer.stop();
            System.out.println("Nach der Pause");
        }
    }
    private javax.swing.Timer timer;
}
 

el_vital

Aktives Mitglied
Ok, das funktioniert super, danke! :D
Wie kann ich es hierbei anwenden:


Code:
public void paintComponent(Graphics g) {
            super.paintComponent(g);
for (int i = 0; i < x; i++) {                
                        g.fillOval(flugParabel[0][i], flugParabel[1][i], 1, 1);
                       
                    }
}

Es wird eine Wurfparabel gezeichnet. Ich möchte, dass nach jedem Punkt eine timer Pause erfolgt. Ist es bei einem paintComponent möglich?
 

dieta

Top Contributor
Das könnte so funktionieren:

Code:
//...

public class TimerDemo extends JFrame implements ActionListener
{

    //...

    private boolean parabelFertig;

    public void zeichneParabel()
    {
        //...
        parabelFertig = false;
        parabelTimer = new Timer(200, this);
        timer.start();
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == parabelTimer)
        {
            if(parabelFertig)
            {
                parabelTimer.stop();
            }
            repaint();
        }
    }

    private Timer parabelTimer;
}
 

el_vital

Aktives Mitglied
ich verstehe das Prinzip immer noch nicht. :bahnhof:

ich habe hier eine Classe die mir ein Intro langsamm einblenden soll.
Die Methode loadImage funktioniert einwandfrei.
Das Bild wird auch ganz schnell angezeigt und das wars. Die Pausen wirken nicht.

Kann mir jemand bitte helfen?

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.*;


class Intro extends JPanel implements ActionListener{

    private Image image ;
    private BufferedImage buffer ;
    float alpha=0.0f; //alpha Wert für das Intro (fuer die Transparenz)
    float di=0.001f; //Erhöhungsschritte des Alphawertes
    Composite a;
    private boolean introText=false;
    private Timer introTimer; 
    float temp = 0.3f;



    Intro () {
        loadImage();
        introTimer = new Timer(2000, this);
        
        //Intro-Bild langsam einblenden
       for(int i=0; i<=900; i++){
           alpha+=di;
           System.out.println("test");
           introTimer.start(); 
           timer.start(); 
           repaint();
           if(alpha>=0.08f){
               introText=true;
               break;
           }
       }

    }
    
    
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == introTimer)
        {
            System.out.println("introTimer");
            repaint();
            introTimer.stop();  
        }
    } 
    
    
    private Timer timer;{
        timer = new Timer(2000, new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                   System.out.println("timer");
                   repaint();
                   timer.stop();
            }
        });

    
    }
    
    

    private void loadImage() {
        image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("titelbild.jpg"));
        MediaTracker mt = new MediaTracker(this) ;
        try {
            mt.addImage(image, 0) ;
            mt.waitForID(0) ;
        }catch(InterruptedException er) {}
        int imgW = image.getWidth(this) ;
        int imgH = image.getHeight(this) ;
        buffer = new BufferedImage(imgW,imgH, BufferedImage.TYPE_INT_ARGB) ;
        Graphics2D g2 = buffer.createGraphics() ;
    }
    
    
  

    

    public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    

        Composite a = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
        g2.setComposite(a);
        g2.drawImage(image, 0, 0, null);
        System.out.println("test2");
        repaint();

        
        if(introText==true){
            g.setColor(new Color(130, 130, 130));
            g.setFont(g.getFont().deriveFont(18F));
            g.drawString("Objektorientierte Programmierung mit Java", 170, 430);
            repaint();
            timer.start(); 
        } 
        
    }
   

}
 

el_vital

Aktives Mitglied
Ich verstehe wo mein Problem liegt, aber ich finde keine Lösung dafür.
Das JPanel wird ja erst in der Hauptklasse dargestellt. Ich kann also in dieser Intro Klasse kein repaint() durchführen. Es mag durchaus langsam eingeblendet werden, aber in der Hauptklasse wird es schon voll gezeichnet dargestellt und zu weiteren Anweisungen übergangen.
 

André Uhres

Top Contributor
Code:
/*
 * Intro.java
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Intro extends JPanel {
    private Image image ;
    private float alpha=0.0f; //alpha Wert für das Intro (fuer die Transparenz)
    private float di=0.01f; //Erhöhungsschritte des Alphawertes
    private Composite a;
    private boolean introText=false;
    public Intro() {
        loadImage();
        timer.start();
    }
    private Timer timer;{
        timer = new Timer(70, new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                einblenden();
            }
        });
    }
    private void einblenden(){ 
        alpha += di; 
        if(alpha > 0.08f) introText=true; 
        if(alpha > 0.9f)  timer.stop(); 
        repaint(); 
    } 
    private void loadImage() {
        image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("titelbild.jpg"));
        MediaTracker mt = new MediaTracker(this) ;
        mt.addImage(image, 0) ;
        try { 
            mt.waitForID(0) ; 
        } catch (InterruptedException ex) {} 
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        Composite a = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
        g2.setComposite(a);
        g2.drawImage(image, 0, 0, null);
        if(introText==true){
            g.setColor(new Color(130, 130, 130));
            g.setFont(g.getFont().deriveFont(18F));
            g.drawString("Objektorientierte Programmierung mit Java", 170, 430);
        }
    }
}
 

RaoulDuke

Bekanntes Mitglied
Hallo zusammen,

ich wollte das letzte Beispiel auch mal ausprobieren. Leider weiss ich nicht wo die Ressource titelbild.jpg beim Laden erwartet wird. Ein "C:\\titelbild.jpg" bricht mit einer Exception ab, da er offenbar das Bild nicht laden kann.

Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:106)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
 

RaoulDuke

Bekanntes Mitglied
Ich hab das Bild im Netbeans Projektordner im Unterordner build mal neben die Klasse gelegt und auch an ein paar anderen Stellen, aber mehr als den Rahmen mit der Schrift krige ich nicht zu sehen. Auch beschwert er sich jetzt nicht mehr beim Laden des Bildes.
 

André Uhres

Top Contributor
RaoulDuke hat gesagt.:
..mehr als den Rahmen mit der Schrift krige ich nicht zu sehen. Auch beschwert er sich jetzt nicht mehr beim Laden des Bildes.
Versteh ich nicht: loadImage() enthält doch weiter nichts als deinen ursprünglicher Code ???:L
paintComponent() ist auch gleich. Und der alpha Wert wird mit timer.start() laufend erhöht und neu gezeichnet.

Versuch's mal mit diesem Bild:
Code:
import java.net.*;
import javax.imageio.*;
...
    private void loadImage() {
        try{
            URL url = new URL("http://images.thetimes.co.uk/TGD/picture/0,,223788,00.jpg");
            image = ImageIO.read(url);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
N Anfänger Problem Java Basics - Anfänger-Themen 4
K Anfänger If / Else Problem Java Basics - Anfänger-Themen 5
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
Spin KI Anfänger Frage : Timer Problem Java Basics - Anfänger-Themen 6
J Anfänger Problem: SimpleIO.readint() Java Basics - Anfänger-Themen 16
StupidAttack Logisches Problem (Blutiger Anfänger) Java Basics - Anfänger-Themen 5
K Anfänger problem Sortieren Java Basics - Anfänger-Themen 2
B in & out class problem (java anfängeR) Java Basics - Anfänger-Themen 5
S (Anfänger) problem Programm lässt sich nicht öffnen! Java Basics - Anfänger-Themen 6
Z Anfänger Problem mit Properties Java Basics - Anfänger-Themen 8
J Anfänger-Problem: Rechnen mit Java Java Basics - Anfänger-Themen 3
T Blutiger Anfänger mit Array Problem Java Basics - Anfänger-Themen 8
G Anfänger: Problem mit Date Java Basics - Anfänger-Themen 3
T Anfänger Problem eine Liste in ein XML-File zu schreiben Java Basics - Anfänger-Themen 3
B Anfänger Problem mit length Java Basics - Anfänger-Themen 15
X Anfänger Problem mit Schleife Java Basics - Anfänger-Themen 3
M PircBot Java Anfänger Problem Java Basics - Anfänger-Themen 18
H Anfänger Problem mit Netbeans Java Basics - Anfänger-Themen 9
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben