Guten Morgen!
Seit gestern Abend versuche ich eine Animation mit einem Thread auf den Bildschirm zu zaubern, aber irgendwie wird die repaint-Methode nicht mehr ausgeführt, der Thread läuft aber vernünftig durch, wie mir println() zeigt!
Hier der Code:
1. Test_main.java -> Hauptklasse
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test_main
{
public Test_main()
{
}
public static void main(String[] args)
{
Test_under frame = new Test_under("Test");
}
}
2. Test_under.java -> geerbtes JFrame -> von hier aus wird der Thread gestartet
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test_under extends JFrame
{
public Test_under(String title)
{
super(title);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
});
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int frameWidth = 250;
int frameHeight = 250;
setBounds(((d.width / 2) - (frameWidth / 2)) , ((d.height / 2) - (frameHeight / 2)) , frameWidth , frameHeight);
Container cp = getContentPane();
cp.setLayout(null);
Test_panel panel = new Test_panel();
cp.add(panel);
setResizable(false);
setVisible(true);
Test_panel.startIntro();
}
}
3. Test_panel.java -> geerbtes JPanel -> hier ist der Thread mit der repaint()-Funktion
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test_panel extends JPanel implements Runnable
{
int x = 0;
int y = 0;
public Test_panel()
{
setBounds(0 , 0 , 244 , 218);
setBackground(Color.WHITE);
setVisible(true);
}
public static void startIntro()
{
Thread intro = new Thread(new Test_panel());
intro.start();
}
public void run()
{
for(int i = 0 ; i <= 100 ; i++)
{
x = i;
y = (i / 2);
repaint();
System.out.println(i);
try
{
Thread.sleep(100);
}
catch (InterruptedException e){}
}
}
public void paint(Graphics g)
{
super.paint(g);
g.drawRect(((244 / 2) - (x / 2)) , ((218 / 2) - (y / 2)) , x , y);
}
}
Vielleicht kann mir ja jemand weiterhelfen!?
Danke für eure Mühe!
Viele Grüße
Florian
Lesezeichen