ハイパーエキスパート:JPanelを拡張するクラスがあります。ShapePanel(Sp)これは、inturnがJFrame(Window)に追加される通常のJPanel(Container)に追加されます。 paintComponentメソッドでは、私は図形を描く....しかし、図形はレンダリング後には決して残らない。デバッガでは、私はサイズ変更するたびに再描画されるか、そのようなことがわかります。JPanelで描画オブジェクトを永続化する
今私は(SPの)paintComponentのJPanelの過負荷とグラフィックオブジェクトは(当然)から来ているこの
super.paintComponent(g);
ShapeDrawerGui SdG = new ShapeDrawerGui((Graphics2D)this.getGraphics());
//for(Shape s : ArrayOfShapes)
{
if(s instanceof Rectangle)
SdG.Paint((Rectangle)s);
else if(s instanceof Triangle)
SdG.Paint((Triangle)s);
else
SdG.Paint((Circle)s);
} //s is a custom-shape object
を追加したJPanel ....
しかし、描画された画像は、パネルの上にとどまることはありません - あなたはそれが分けられて、それが消えたのを見ます...
私はいくつかの検索をしましたが、無駄です。
実際の描画
public ShapeDrawerGui(Graphics2D _g)
{
g = _g;
g.setColor(Color.Black);
}
@Override
public void Paint(Circle c)
{
g.drawArc(0, 0, 50, 50, 0, 360);
}
@Override
public void Paint(Triangle t)
{
Polygon p = new Polygon();
p.addPoint(0, 25);
p.addPoint(0 , 50);
p.addPoint(50, 50);
g.drawPolygon(p);
}
@Override
public void Paint(Rectangle r)
{
g.drawRect(0, 0, 50, 50);
}
種類
に関してマーカス
は
あなたは 'Paint()'メソッドを大文字のP - ouch ..としていますが、これは問題ではありません。 –
あなたは 'ShapeDrawerGui SdG = new ShapeDrawerGui((Graphics2D)this.getGraphics());'を 'ShapeDrawerGui SdG =新しいShapeDrawerGui((Graphics2D)g);' –
* "に変更しようとしましたか? JPanel "* [SSCCE](http://sscce.org/)は、通常、事柄を明白にします。 –