我以前遇到过这个问题几次,我最终尝试解决它,但我不喜欢正确的解决方案。我有一个简单的 JFrame 程序。基本的 JFrame 代码如下所示:
JFrame frame = new JFrame("halp");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setResizable(false);
frame.setVisible(true);
这是我想要实现的目标的图像:
如您所见,顶部栏和窗口边框占据了空间。解决此问题的一种方法是增加窗口的大小,但这一点也不简洁,而且并非每个系统都具有相同的窗口边框大小。
我做了研究并尝试了一些我在之前提出的问题中发现的东西:
frame.pack()
。此方法仅将窗口设置为最小尺寸,就好像我根本没有设置尺寸一样。-
frame.getContentpane()。设置(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();
应该可以解决你的问题。
关于java - 设置 JFrame 中可见空间的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087658/