私は基本的に長方形のマトリックスを持っていて、それらを別々に描きたいのですが、描かれたそれぞれが前の長方形を削除し、最後の孤独な長方形になってしまいます。そして、私は何時間もグーグルして検索していて、見つけた唯一のアドバイスは一度にそれを描くことでした。それを試しましたが、それぞれ別々のコンポーネントを持つことを中心に構築されたリスナーを完全に台無しにしているようです。
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Color;
import javax.swing.JComponent;
@SuppressWarnings("serial")
public class GraphicEdge extends JComponent
{
public Rectangle box;
private Edge edge;
/**
* Creates a graphical box corresponding to the given edge at the given
* position
* @param x x coordinate
* @param y y coordinate
* @param e edge represented
*/
public GraphicEdge(int x, int y, int width, int length, Edge e)
{
this.edge = e;
this.box = new Rectangle(x, y, width, length);
}
/**
* Paints said edge. Will be recalled whenever the edge switches from
* active to inactive.
* @param g graphics.
*/
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
if (this.edge.getActive()==0)
{
g2.setColor(Color.red);
}
else
{
g2.setColor(Color.green);
}
g2.fill(this.box);
g2.draw(this.box);
}
/**
* Calls for the redrawing of the component.
*/
public void redrawComponent()
{
repaint();
}
/**
* Gets edge.
*/
public Edge getEdge()
{
return this.edge;
}
/**
* Returns the edge's rectangle.
* @return
*/
public Rectangle getBox()
{
return this.box;
}
}