有没有办法在某个分辨率(最大并包括1024x768)以下最大化JFrame,但是如果监视器更大,则将其大小固定为该分辨率吗?

我知道.setExtendedState()的工作方式,但是无论监视器大小如何,这只会使它最大化。

最佳答案

Toolkit's getScreenSize()方法将允许您获取屏幕的大小。

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
System.out.println(screenSize);
// use this information in a getPreferredSize() override.


覆盖JFrame可能是这种情况。例如,

class MyFrame extends JFrame {
   public static final int MAX_WIDTH = 0x400;
   public static final int MAX_HEIGHT = 0x300;

   @Override
   public Dimension getPreferredSize() {
      Toolkit toolkit = Toolkit.getDefaultToolkit();
      Dimension screenSize = toolkit.getScreenSize();
      int maxWidth = Math.min(screenSize.width, MAX_WIDTH);
      int maxHeight = Math.min(screenSize.height, MAX_HEIGHT);

      return new Dimension(maxWidth, maxHeight);
   }
}

10-07 13:02