0

我在使用方法getWidth()getHeight(). 我用包尝试了一些东西,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构造函数但是有一个错误:/

4

2 回答 2

3

只需在方法内调用getWidth()and并使用为您的参数返回的结果。getHeight()paint(...)fillOval(...)

但话虽如此,最好还是在添加到 Frame 的 Canvas 中进行绘制。paintComponent(...)话虽如此,在 Swing 应用程序中添加到 JFrame 的 contentPane 中的 JPanel 方法中绘制仍然要好得多。

于 2012-11-29T23:04:08.913 回答
3

最好将所有绘图功能提取到JComponent此处,以充分利用 Swing 优化的绘图模型,使用paintComponent.

Circle实际上是一个JFrame. 在其构造函数内部,创建了一个新组件来处理圆圈的绘制。构造Color函数已被删除,因为这是无效的语法。

圆圈坐标从左上角开始,并采用完整的可用宽度和高度进行绘图。

还建议在旧式 AWT 组件上使用轻量级 Swing 组件。

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());  
    }
}

请参阅:在 AWT 和 Swing 中绘画

于 2012-11-29T23:06:27.013 回答