首先,我们需要一个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对象上绘制它们。但是我如何在当前的实现中容纳它呢?