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

标签 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 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);
    }
 }

最佳答案

这是一道简单的数学题。将容器宽度与圆 width 的差除以 2 以定位 drawOval 的 x 坐标。对 y 坐标的 height 执行相同的操作。

关于java - 如何在 JFrame 中将绘制的对象居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37533730/

相关文章:

html - 当我的 DIV 包含图像时如何应用垂直居中?

html - 如何在 bootstrap 中将 2 个图像居中

java - 尝试重复直到条件为假

java - 降低内循环的时间复杂度 : Find count of elements greater than current element in the first loop and store that in solved array

java - 为什么此代码不起作用 : jLabel setIcon?

java - 在显示主窗口之前打开配置对话框?

css - 居中导航栏 - CSS

java - 通过 AJP 在 Tomcat 下的 Servlet 中忽略刷新输出流

java - 重新初始化 ScheduledExecutorService 中的修复延迟

java - 将文件数据读入 JTable