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
2. Test_under.java -> geerbtes JFrame -> von hier aus wird der Thread gestartetCode: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"); } }
3. Test_panel.java -> geerbtes JPanel -> hier ist der Thread mit der repaint()-FunktionCode: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(); } }
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







Zitieren

Lesezeichen