gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:15:35 25 4
gpt4 key购买 nike

我在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com