Java 您可以创建一个单独的方法来创建JFrame大小吗?

Java 您可以创建一个单独的方法来创建JFrame大小吗?,java,swing,methods,jframe,Java,Swing,Methods,Jframe,我提出的上一个问题被标记为重复问题,而链接的问题与我的需要并不接近。我在问是否有可能创建一个方法,我可以调用它来设置JFrame大小 因此,我试图创建一个JFrame GUI,但我想在GUI方法之外创建方法,就像在GUISize方法中一样,当GUISize方法不是一个方法并且代码是调用该方法的地方时,JFrame可以工作 这是一个作业,但是,没有一个是技术上标记的。我只是好奇是否有可能为我的框架创建一个GUISize方法 我尝试在方法之外引用框架,但是不能,我已经找到了在构建JFrame的方法之

我提出的上一个问题被标记为重复问题,而链接的问题与我的需要并不接近。我在问是否有可能创建一个方法,我可以调用它来设置JFrame大小

因此,我试图创建一个JFrame GUI,但我想在GUI方法之外创建方法,就像在GUISize方法中一样,当GUISize方法不是一个方法并且代码是调用该方法的地方时,JFrame可以工作

这是一个作业,但是,没有一个是技术上标记的。我只是好奇是否有可能为我的框架创建一个GUISize方法

我尝试在方法之外引用框架,但是不能,我已经找到了在构建JFrame的方法之外引用JFrame的方法,但是不能

import java.awt.*;
import javax.swing.*;

public class CQAC {

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

    public static void GUI()
    {
        JFrame MainFrame = new JFrame("My First GUI");
        MainFrame.setTitle("CQAC");
        MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MainFrame.getContentPane().add(GUISize);
        GUISize();

        MainFrame.setVisible(true);

    }


    public static void GUISize()
    {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension screenSize = kit.getScreenSize();
        int screenHeight = screenSize.height;
        int screenWidth = screenSize.width;
        GUI.MainFrame.setSize(screenWidth / 2, screenHeight / 2); 
        GUI.setLocation((screenWidth/4)-8,screenHeight/4);
    }

}

<> >代码应该打开一个空白的jFrand,它是用户屏幕的一半,并放置在屏幕的中间,目前JFrice没有打开

您当前的代码将无法编译,我不明白所有的原因。代码>静态会比其他任何东西更快地愚弄你,学会在没有它的情况下生活,它有它的目的,而你使用的方式真的不是其中之一

相反。首先创建一个新的类实例,并在其构建阶段构建所需的元素。这样,您就摆脱了“不能引用非静态的、诸如此类的”错误

相反,创建一个方法,其唯一任务是创建主框架,而不是让它返回此实例

接下来,使用框架实例,将其传递给“调整大小”方法和folia,您就有了一个工作模式

例如

import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class CQAC {

    public static void main(String args[]) {
        // Get out of the static context as soon as possible
        new CQAC();
    }

    public CQAC() {
        JFrame mainFrame = makeMainFrame();
        adaptToCurrentScreen(mainFrame);
        mainFrame.setVisible(true);
    }

    protected JFrame makeMainFrame() {
        JFrame mainFrame = new JFrame("My First GUI");
        mainFrame.setTitle("CQAC");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        return mainFrame;
    }

    protected void adaptToCurrentScreen(JFrame frame) {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension screenSize = kit.getScreenSize();

        System.out.println(screenSize);
        int screenHeight = screenSize.height;
        int screenWidth = screenSize.width;
        frame.setSize(screenWidth / 2, screenHeight / 2);
        //frame.setLocation((screenWidth / 4) - 8, screenHeight / 4);
        // And because this is simpler :/
        frame.setLocationRelativeTo(null);
    }

}
另一方面,
getScreenSize
通过这种方式返回原始屏幕大小,它不会考虑MacOS上任务栏或dock和菜单栏的大小,这可能会使您在显示时窗口“看起来”偏移

相反,您应该使用
GraphicsConfiguration
的边界,该边界附加到
graphicsdevelice
GraphicsEnvironment
。。。不,这些事情不容易

您可能还想看看

答案是“是”,问题是,您在不可取的地方使用了
静态
,并且您在调整大小的方法中引用了一个与您创建的方法无关的实例