Java Swing JPanel。我如何画形状?

时间:2011-10-21 07:30:42

标签: java swing jpanel

我已经实现了一个类DrawingPane extends JPanel来绘制一些形状。我已经为每种类型的形状创建了一个单独的方法,例如圆形对应:

public void paintCircles(Graphics g) {
           super.paint(g);

但是我无法通过对类DrawingPane的引用从另一个类调用它。如何才能做到这一点?如果不可能这样,我怎么能调用一个单独的方法来绘制每种类型的形状,因为代码要求因形状不同而不同?

此外,类JPanel中的scrollRectToVisible方法不适用于对象RoundRectangle2D.Double。如何使这些形状也可见?

2 个答案:

答案 0 :(得分:3)

您需要在paintComponent(Graphics g)中实施DrawingPane,并且可以使用draw(Shape s)绘制任何形状:

public void paintComponent(Graphics g) {
        super.paintComponent(g); 
        Graphics2D g2 = (Graphics2D)g;    
        g2.draw(yourShape);
}

答案 1 :(得分:2)

您可以将Graphics转换为Graphics2D并使用public void draw(Shape s)方法传递您拥有的所有Shape。对于任何Shape,您可以使用public Rectangle getBounds()并将Rectangle传递给scrollRectToVisible。