我之前曾遇到过这个问题,我终于尝试解决了这个问题,但是我找不到合适的解决方案。我有一个简单的JFrame程序。基本的JFrame代码如下所示:

JFrame frame = new JFrame("halp");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,500);
    frame.setResizable(false);
    frame.setVisible(true);


这是我要完成的工作的图像:

java - 设置JFrame中可见空间的大小-LMLPHP

如您所见,顶部栏和窗口的边框占用了空间。解决此问题的一种方法是增加窗口的大小,但这并不是整齐的,而且并非每个系统都具有相同的窗口边框大小。

我已经进行了研究,并尝试了一些在先前提出的问题上发现的事情:


frame.pack()。此方法仅将窗口设置为最小大小,好像我根本没有设置大小一样。
frame.getContentPane().setSize(500,500);。窗口中的边框仍以帧大小计。
frame.setPreferredSize(new Dimension(500, 500));JPanel.setPreferredSize(new Dimension(500, 500));。与frame.pack()一样,帧变为最小尺寸。


我尝试结合使用这些方法,但似乎没有任何效果。

我想念什么?我需要添加JFrame的另一方面吗?这是BlueJ的不兼容问题吗?

最佳答案

frame.getContentPane().setPreferredSize(new Dimension(500,500));


跟一个

frame.pack();


应该可以解决您的问题。

09-30 18:00
查看更多