如何在JFrame中将绘制的对象居中?

3

我正在制作一个在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);
    }
 }
1个回答

3

这是一个简单的数学问题。将容器宽度与圆形宽度之差除以2,以确定drawOval的x坐标。对于y坐标,也要进行相同的操作,使用容器高度与圆形高度之差。


如何获取容器的宽度和高度?如果这很简单,那我很抱歉。 - 0xCursor
...如javadoc中所述... - Reimeus
最后一个问题。即使我将JFrame全屏,圆形仍应该居中吗? - 0xCursor
这将在您尝试后揭示 ;) - Reimeus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接