java - 如何使用 getWidth 和 getHeight 方法将圆放入 Frame 中间?

标签 java methods colors frame geometry

我在使用 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());  
    }
}

参见:Painting in AWT and Swing

关于java - 如何使用 getWidth 和 getHeight 方法将圆放入 Frame 中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636237/

相关文章:

javascript - jquery加载函数不调用Spring Boot Controller 来替换thymeleaf模板片段

C# 从不同的表单类调用方法?

python - 类函数不返回正确的值

javascript - dc.js 制作两种颜色之间的颜色范围

image - 压缩 JPEG 图像的 L、a、b 空间的不确定性

java - 我如何从这样的数据库中检索数据?

java - OpenGL 旋转相机

java - 在 tomcat 7.0 中写入临时文件失败

java - 如何在 Android 中多次调用一个方法

javascript - Java颜色整数到JavaScript中的RGB字符串