【发布时间】:2021-03-23 20:30:27
【问题描述】:
您能帮忙吗?我想画一个圆圈。所以我在下面创建了 Circle 类。我可以通过将圆添加到框架来绘制圆,但不能通过将其添加到面板然后将面板添加到框架来绘制圆。我想做后者,因为我想要多个圈子。
public class Circle extends Canvas{
int x;
int y;
int rectwidth;
int rectheight;
public Circle(int x, int y, int r) {
this.x=x;
this.y=y;
this.rectwidth=r;
this.rectheight=r;
}
public void paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paint(g);
// draw Ellipse2D.Double
g2.draw(new Ellipse2D.Double(x, y, rectwidth, rectheight));
g2.setColor(Color.BLACK);
}
}
以下内容取自View类:
Panel container = new Panel();
container.setPreferredSize(new Dimension(400,400));
container.setLayout(new BorderLayout());
Circle circle = new Circle(20,20,200);
container.add(circle, BorderLayout.CENTER);
frame.add(container); // <- this does not draw
frame.add(circle);// <- this draws the circle
frame.pack();
frame.setVisible(true);
我用FlowLayout试了一下,没有布局,去掉pack(),去掉preferredSize,在Frame上画了多个圆圈。感谢您的任何回答。
【问题讨论】:
-
使用 awt 代替 Swing 是否有特定原因?
-
我正在做的课程只教AWT。
-
你真的应该找一门新的课程,AWT已经死了20年了。
标签: java awt graphics2d