Java JFrame根据屏幕分辨率调整大小

Asg*_*har 14 java user-interface swing

我使用myEclipse Matisse创建了java GUI.当我的屏幕分辨率为1024x768时,它工作正常,但当我更改分辨率时,我的GUI工作不正常.我希望我的GUI窗口应该根据屏幕分辨率重新调整我正在扩展JFrame来创建主窗口.

 public class MyClass extends JFrame {

      //I am putting some controls here.

      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      setBounds(0,0,screenSize.width, screenSize.height);
      setVisible(true);

      pack()

    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,我做什么,设置大小硬编码或使用ToolKit,帧大小保持不变.

Kow*_*ser 28

您可以尝试使用它来最大化框架:

this.setExtendedState(JFrame.MAXIMIZED_BOTH);
Run Code Online (Sandbox Code Playgroud)

  • 我是downvoter,因为起初我认为它没有回答OP问题.对不起.现在我看到它是一个好的答案,我给它一个+1 :) (4认同)

Pet*_*hev 17

您正在调用pack()哪个更改框架大小,以便它适合内部组件.这就是我认为它缩小的原因.删除该pack()行,它应该工作.

  • *"布局管理器不负责窗口大小,并且必须将组件布置在固定大小内."*没有人*曾经*表示布局管理器是(或应该)负责完整的大小 - 屏幕窗口.布局管理器负责窗口的**子**的大小和布局. (3认同)
  • @同样的点继续添加".pack离开框架布局管理器负责框架大小,布局管理器擅长调整平台依赖性和影响组件大小的其他因素."*所以..现在我们'重新添加'null`布局到'有时'?这更令人沮丧.即使您在框架的整个内容区域进行自定义绘制,该绘制也需要在`JComponent`中完成,然后将其添加到框架中.添加它时,使用*布局管理器来调整组件的大小和位置本身就很简单.* (2认同)

And*_*son 5

调用pack()对于正常运行的GUI至关重要.添加完所有组件后调用它,让它验证容器并将其设置为自然大小.

然后调用setSize()setBounds()之后的相关方法.


小智 5

另一种方法是:

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
pack();
setSize(screenSize.width,screenSize.height);
Run Code Online (Sandbox Code Playgroud)