Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JFrame中居中绘制对象?_Java_Swing_Centering - Fatal编程技术网

Java 如何在JFrame中居中绘制对象?

Java 如何在JFrame中居中绘制对象?,java,swing,centering,Java,Swing,Centering,我正在制作一个程序,在JFrame上画一个圆。我想用屏幕中心的圆圈来启动程序,这样即使JFrame窗口的大小改变了,它仍然居中。我该怎么做?我尝试过不同的方法,但还没有找到任何有效的方法。代码如下所示: import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class ImageFrame extends JFrame { private static final l

我正在制作一个程序,在
JFrame
上画一个圆。我想用屏幕中心的圆圈来启动程序,这样即使
JFrame
窗口的大小改变了,它仍然居中。我该怎么做?我尝试过不同的方法,但还没有找到任何有效的方法。代码如下所示:

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageFrame extends JFrame {
    private static final long serialVersionUID = 1L;

    int width = 40;
    int height = 40;
    int x = 160;
    int y = 70;

    JPanel panel = new JPanel() {
        private static final long serialVersionUID = 1L;
        public void paintComponent(Graphics g) {
            super.paintComponents(g);
            g.drawOval(x, y, width, height);
            }
    };

    public ImageFrame() {
        add(panel);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);
        setVisible(true);
    }
 }

这是一道简单的数学题。将容器宽度和圆
宽度的差值除以2,以确定
drawOval
的x坐标。对y坐标的
高度执行相同操作。

如何获得容器宽度和高度?抱歉,如果这是非常简单的…正如在…最后一件事中发现的那样。即使我使JFrame全屏显示,圆是否仍应居中?这将在您尝试时显示;)