Java 如何在全屏模式下限制JFrame的边界?

Java 如何在全屏模式下限制JFrame的边界?,java,swing,jframe,jpanel,fullscreen,Java,Swing,Jframe,Jpanel,Fullscreen,基本上,我想控制内容窗格的大小,即使应用程序处于全屏独占模式。我希望内容是方形的,黑条会占用未使用的空间。有办法做到这一点吗?设置首选大小不起作用,它只会填充屏幕。以下是我代码的要点: setDefaultCloseOperation(EXIT_ON_CLOSE); setBackground(Color.BLACK); setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize()); setUndec

基本上,我想控制内容窗格的大小,即使应用程序处于全屏独占模式。我希望内容是方形的,黑条会占用未使用的空间。有办法做到这一点吗?设置首选大小不起作用,它只会填充屏幕。以下是我代码的要点:

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setBackground(Color.BLACK);

    setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize());
    setUndecorated(true);
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);

    getContentPane().setPreferredSize(new Dimension(getHeight(), getHeight()));
    getContentPane().setBackground(Color.WHITE);

    pack();

这将导致整个屏幕为白色。在我的宽屏显示器上,我希望屏幕中间是白色的,两边是黑色的条。有没有干净的方法可以做到这一点?我想我可以添加一个辅助JPanel,正确地调整它的大小,并将其用于所有事情,但这似乎有些草率。我宁愿使用JFrame的内置内容窗格。

如果您使用的是全屏独占模式,您不能,这就是重点。如果您只是尝试调整框架的大小,那么允许它最大化使用setExtendedState,然后控制内容,在组件上使用getPreferredSize和类似GridBagLayout的东西,以满足约束请参见。它迫使棋盘在任何框架大小下都变成正方形。