我一直试图让它在屏幕中央开始

问题描述

这是 JavaSE-11,因为我认为它是 Java 的最新 LTS 版本,并且我使用的是 Eclipse IDE。 请有人告诉我如何在运行时将其置于屏幕中央。

package Main;

import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class GUI extends JFrame{
    
    protected static final ImageIcon ICON = new ImageIcon("Image.png");

    public static void main(String[] args){
        new GUI();
    }

    public GUI(){
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        setDefaultCloSEOperation(WindowConstants.disPOSE_ON_CLOSE);
        setPreferredSize(new Dimension(dim.width/2-this.getSize().width/2,dim.height/2-this.getSize().height/2));
        setTitle("GUI");
        setIconImage(ICON.getimage());
        pack();
        setVisible(true);
    }
}

解决方法

您可以使用:

frame.setLocationRelativeTo( null );

在确定框架的大小之后。

所以,代码的基本结构应该是:

frame.add(...);
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
,
        int w = this.getPreferredSize().width/2;
        int y = this.getPreferredSize().height/2;
        int dimw = dim.width/2;
        int dimh = dim.height/2;
        setLocation( dimw-w,dimh-y);