我在使用 getWidth()
和 getHeight()
方法将绘制的圆放入 Frame 中间时遇到问题。我尝试使用 Image
包,但不知道在哪里实现此方法:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Frame;
import java.awt.Image;
public class Circle extends Frame {
public Circle() {
setSize(400,400);
setLocationRelativeTo(null);
setVisible(true);
}
public Color() {
}
public void paint(Graphics g) {
g.setColor(Color.ORANGE);
g.fillOval(200, 200, 200, 200);
}
public static void main(String[] args) {
Circle c = new Circle();
c.paint(null);
}
}
然后我必须使用方法 setColor(Color)
和 Color
类构造函数来随机设置该圆圈的颜色(在每次运行该程序后)。我打开了 Color
构造函数,但出现错误:/
最佳答案
最好将所有绘制功能提取到此处的 JComponent
中,以便使用 paintComponent
充分利用 Swing 的优化绘制模型。
Circle
实际上是一个JFrame
。在其构造函数内部,创建了一个新组件来处理圆的绘制。 Color
构造函数已被删除,因为这是无效的语法。
圆坐标从左上角开始,并采用完整的可用宽度和高度进行绘制。
还建议使用轻量级 Swing 组件而不是旧式 AWT 组件。
public class Circle extends JFrame {
public Circle() {
setSize(400, 400);
add(new CirclePanel());
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
Circle c = new Circle();
}
}
class CirclePanel extends JComponent {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.ORANGE);
g.fillOval(0, 0, getWidth(), getHeight());
}
}
关于java - 如何使用 getWidth 和 getHeight 方法将圆放入 Frame 中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636237/