Brak odświeżania panelu

0

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.

0
        public void paintComponent(Graphics g)
        {
                super.paintComponent(g);
                Graphics2D g2 =(Graphics2D)g;
 
                Klocek k=new Klocek(this); //ten wiersz jest źle
                k.draw(g2);
 
        }

Zawsze rysujesz nowo utworzony klocek.

0

super, dzięki!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1