Java 您可以创建一个单独的方法来创建JFrame大小吗?
我提出的上一个问题被标记为重复问题,而链接的问题与我的需要并不接近。我在问是否有可能创建一个方法,我可以调用它来设置JFrame大小 因此,我试图创建一个JFrame GUI,但我想在GUI方法之外创建方法,就像在GUISize方法中一样,当GUISize方法不是一个方法并且代码是调用该方法的地方时,JFrame可以工作 这是一个作业,但是,没有一个是技术上标记的。我只是好奇是否有可能为我的框架创建一个GUISize方法 我尝试在方法之外引用框架,但是不能,我已经找到了在构建JFrame的方法之外引用JFrame的方法,但是不能Java 您可以创建一个单独的方法来创建JFrame大小吗?,java,swing,methods,jframe,Java,Swing,Methods,Jframe,我提出的上一个问题被标记为重复问题,而链接的问题与我的需要并不接近。我在问是否有可能创建一个方法,我可以调用它来设置JFrame大小 因此,我试图创建一个JFrame GUI,但我想在GUI方法之外创建方法,就像在GUISize方法中一样,当GUISize方法不是一个方法并且代码是调用该方法的地方时,JFrame可以工作 这是一个作业,但是,没有一个是技术上标记的。我只是好奇是否有可能为我的框架创建一个GUISize方法 我尝试在方法之外引用框架,但是不能,我已经找到了在构建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
。。。不,这些事情不容易
您可能还想看看答案是“是”,问题是,您在不可取的地方使用了静态
,并且您在调整大小的方法中引用了一个与您创建的方法无关的实例