如何使用常见的JComponent对象在swing GUI中绘制各种形状

时间:2015-04-06 05:59:14

标签: java swing paintcomponent jcomponent

首先,我们需要一个JFrame对象。

然后,我们创建一个扩展JComponent类的类的对象,并在paintComponent(Graphics g)方法中插入适当的指令,其中g实际上是一个Graphics2D对象,并将其附加到JFrame对象。 / p>

现在,我所教的是绘制一个矩形,我这样做:

class RectangleComponent extends JComponent {}

现在,画一个圆圈,我做:

class CircleComponent extends JComponent{}

等等,

但是,我希望有一个可以绘制多个形状的公共类。

我做了以下事情:

class Component extends JComponent {
    Shape shape;
    public Component(Shape shape) {
        this.shape = shape;
    }
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.draw(this.shape);
    }
}

总的来说,当我得到绘制矩形的指令时,我会这样做:

Shape currentShape = new Rectangle(args);
Component component = new Component(currentShape);
frame.add(component);

在此之后,我立即得到一个绘制圆圈的指示:

Shape currentShape = new Ellipse2D.Double(args);
Component component = new Component(currentShape);
frame.add(component);

作为我的新秀,这是我迷失的地方。我认为这会使圈子覆盖矩形。但那不是我的意图。 我应该怎么做才能让它们一起出现?我想我应该在同一个Component对象上绘制它们。但是我如何在当前的实现中容纳它呢?

0 个答案:

没有答案