Java 如何使用getWidth和getHeight方法将圆放入帧的中间?

Java 如何使用getWidth和getHeight方法将圆放入帧的中间?,java,methods,colors,frame,geometry,Java,Methods,Colors,Frame,Geometry,我在使用方法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);

我在使用方法
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
构造函数,但出现了一个错误:

只需从
paint(…)
方法中调用
getWidth()
getHeight()
,并使用为
fillOval(…)
参数返回的结果

但话说回来,最好是在添加到框架中的画布上绘制。话虽如此,在Swing应用程序中添加到JFrame的contentPane中的JPanel的
paintComponent(…)
方法中绘制更好。

只需从
paint(…)中调用
getWidth()
getHeight()
方法,并使用为
fillOval(…)
参数返回的结果


但话说回来,最好是在添加到框架中的画布上绘制。说到这里,最好还是画出
paintComponent(…)
在Swing应用程序中添加到JFrame内容窗格的JPanel方法。

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

圆圈实际上是一个
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());  
    }
}

请参阅:

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

圆圈实际上是一个
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());  
    }
}

请看:

@Reimeus:你和你的好榜样也是如此!谢谢您可以在每次运行时获得此随机颜色的提示吗?@Fastkowy:创建一个允许颜色的数组,然后使用随机对象获取一个不大于数组大小-1的整数(简单地
nextInt(mycolorray.length)
,并使用该int从数组中选择一种颜色。@Reimeus:你和你的好例子也一样!谢谢!你可以在每次运行时都得到这种随机颜色的提示吗?@Fastkowy:创建一个允许颜色的数组,然后使用一个随机对象获得一个不大于数组大小-1的int(只需
nextInt(mycolorray.length)
,并使用该int从数组中选择颜色。谢谢,“您能解释一下,为什么创建了圆对象吗?”对不起,我现在明白了:)请参见此创建随机颜色。已编辑^。因此我必须创建类(颜色)像这样?请不要更改原始问题中的代码,这会影响给出的任何答案。如果你想创建一个新帖子,人们非常乐意提供帮助。谢谢,“你能解释一下,为什么创建了圆形对象吗?”对不起,我现在明白了:)请参见此创建随机颜色。已编辑^。那么我必须像这样创建类(颜色)吗?请不要更改原始问题中的代码,这会影响给出的任何答案。如果你想创建一个新的帖子,人们非常乐意提供帮助。