Hej!
Mam problem z odświeżaniem panelu (właściwie obiektu klasy Klocek).
Klasa Ramki
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Ramka extends JFrame {
private Plansza plansza;
private KlocekWatek kw;
public Ramka() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(400, 200, 200, 400);
plansza=new Plansza();
setContentPane(plansza);
Thread t=new Thread(plansza);
t.start();
}
}
Klasa Klocka
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
public class Klocek {
private Plansza jp;
int x[]={0,20,0,20};
int y[]={0,0,20,20};
public Klocek(Plansza panel)
{
jp=panel;
}
public void draw(Graphics2D g2)
{
Rectangle2D r1=new Rectangle2D.Double(x[0],y[0],20,20);
Rectangle2D r2=new Rectangle2D.Double(x[1],y[1],20,20);
Rectangle2D r3=new Rectangle2D.Double(x[2],y[2],20,20);
Rectangle2D r4=new Rectangle2D.Double(x[3],y[3],20,20);
g2.setPaint(Color.red);
g2.fill(r1);
g2.fill(r2);
g2.fill(r3);
g2.fill(r4);
}
public void ruch()
{
y[0]+=20;
y[1]+=20;
y[2]+=20;
y[3]+=20;
jp.repaint();
}
public int getX(int i){
return x[i];
}
public int getY(int i){
return y[i];
}
}
Klasa Plansza
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
public class Plansza extends JPanel implements Runnable{
private Klocek klocek=new Klocek(this);
//private JPanel panel;
public void run()
{
while(true)
{
klocek.ruch();
//System.out.println(klocek.getY(0));
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
repaint();
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 =(Graphics2D)g;
Klocek k=new Klocek(this);
k.draw(g2);
}
}
Prośba o sugestie co jest źle.