안녕하세요 전문가 : JPanel을 확장 한 클래스가 있습니다. 이제 ShapePanel (Sp)이 정상적인 JPanel (컨테이너)에 추가되어 inturn이 JFrame (윈도우)에 추가됩니다. paintComponent 메서드에서 나는 ... 셰이프를 그리지 만 셰이프는 렌더링 후에 지속되지 않습니다. 디버거에서 크기가 변경 될 때마다 다시 그려지는 것을 볼 수 있습니다.JPanel에서 그려지는 객체의 지속성
는 지금은 JPanel의의의 오버로드 (SP의)를 paintComponent에와
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와 함께 사용합니다. - 아우 .. 글쎄, 그건 문제가되지 않습니다. –
ShapeDrawerGui SdG = 새로운 ShapeDrawerGui ((Graphics2D) this.getGraphics());'ShapeDrawerGui SdG = 새로운 ShapeDrawerGui ((Graphics2D) g); ' –
* "그래픽 개체는 (분명히) JPanel "* [SSCCE] (http://sscce.org/)는 일반적으로 일을 분명히합니다. –