Hi,
meine Frage ist bezüglich eines Threads. Ich habe hierzu ein Dummy-Programm geschrieben:
Mein Frame mit main:
Mein Panel:
und noch eine Klasse fürs malen:
So wie es jetzt ist, funktioniert alles.
Wenn ich in der Klasse Figur die auskommentierte Zeilen 44-48 hinzufüge, macht mein Programm nichts mehr, oder besser gesagt Panel + Frame wird erzeugt, aber nix gemalt.
Ich möchte jedoch, die Bilder nacheinander malen mit einer Pause von 500 Millisekunden.
Ich habe im Internet gestöbert und auch andere Sachen probiert, wie z.B.
Thread t = new Thread();
t.start();
t.sleep(500);
usw. Langsam glaube ich, dass es an was anderem liegt.
Was mache ich flasch?
Kann mir bitte jemand sagen, wie das geht, dass das Porgramm den nächsten Schleifendurchgang in x Millisekunden machen soll?
Danke schon mal im voraus
meine Frage ist bezüglich eines Threads. Ich habe hierzu ein Dummy-Programm geschrieben:
Mein Frame mit main:
Java:
import java.awt.Dimension;
import javax.swing.JFrame;
public class GameFrame extends JFrame
{
GamePanel gp;
public GameFrame()
{
gp = new GamePanel();
add(gp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setSize(new Dimension(1000,800));
setResizable(false);
repaint();
}
public static void main(String[] args)
{
GameFrame GF = new GameFrame();
GF.setVisible(true);
}
}
Mein Panel:
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.*;
import javax.swing.*;
public class GamePanel extends JPanel
{
Figur f;
public GamePanel()
{
setPreferredSize(new Dimension(300,300));
setBackground(Color.green);
f = new Figur();
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
f.laufen(g);
}
}
und noch eine Klasse fürs malen:
Java:
import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import java.io.File;
import javax.imageio.ImageIO;
import java.util.ArrayList;
public class Figur
{
public void laufen(Graphics g)
{
String r1 = "D:/Java/pics/pic1.gif";
String r2 = "D:/Java/pics/pic2.gif";
String r3 = "D:/Java/pics/pic3.gif";
Image img1;
Image img2;
Image img3;
Image curImg;
ArrayList<Image> cont = new ArrayList();
try
{
cont.clear();
img1 = ImageIO.read(new File(r1));
cont.add(img1);;
img2 = ImageIO.read(new File(r2));
cont.add(img2);
img3 = ImageIO.read(new File(r3));
cont.add(img3);
for(int j = 0; j < 10; j++)
{
for (int i = 0; i < 3; i++)
{
// try
// {
// Thread.sleep(500);
//
// }catch(InterruptedException e){System.out.println("Hier!");}
curImg = cont.get(i);
g.drawImage(curImg,40 + 50* j,50 +50 * j,null);
}
}
} catch (IOException e) {System.out.println("Image nicht da");}
}
}
So wie es jetzt ist, funktioniert alles.
Wenn ich in der Klasse Figur die auskommentierte Zeilen 44-48 hinzufüge, macht mein Programm nichts mehr, oder besser gesagt Panel + Frame wird erzeugt, aber nix gemalt.
Ich möchte jedoch, die Bilder nacheinander malen mit einer Pause von 500 Millisekunden.
Ich habe im Internet gestöbert und auch andere Sachen probiert, wie z.B.
Thread t = new Thread();
t.start();
t.sleep(500);
usw. Langsam glaube ich, dass es an was anderem liegt.
Was mache ich flasch?
Kann mir bitte jemand sagen, wie das geht, dass das Porgramm den nächsten Schleifendurchgang in x Millisekunden machen soll?
Danke schon mal im voraus