Hi,
ich möchte einefach eine Punkt über mein Frame bzw. Panel laufen lassen. Hab dazu bis jetzt folgende beiden Klassen verfasst:
und
Allerdings sehen ich den bewegten Punkt erst, wenn ich den Frame nach dem starten in der Größe verändert habe.
Warum?
Ist der oben gezeigt Weg überhaupt sinnvoll?
NDake
ich möchte einefach eine Punkt über mein Frame bzw. Panel laufen lassen. Hab dazu bis jetzt folgende beiden Klassen verfasst:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Pong extends JPanel{
static Ball ball;
public static void main(String[] args) {
JFrame f = new JFrame("Pong");
f.setSize(400,400);
f.setLocation(300,150);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
Pong feld = new Pong();
ball = new Ball( feld );
f.add( feld );
feld.repaint();
f.repaint();
}
@Override
protected void paintComponent( Graphics g )
{
g.clearRect(0,0,400,400);
g.fillOval(ball.posx,ball.posy,20,20);
}
}
und
Code:
public class Ball extends Thread {
int posx=0;
int posy=200;
Pong parent;
Ball(Pong feld)
{
parent=feld;
this.start();
}
public void run()
{
while(true)
{
posx++;
if(posx>=400) posx=0;
parent.repaint();
try{Thread.sleep(5);}
catch(InterruptedException e){}
}
}
}
Allerdings sehen ich den bewegten Punkt erst, wenn ich den Frame nach dem starten in der Größe verändert habe.
Warum?
Ist der oben gezeigt Weg überhaupt sinnvoll?
NDake