我有一个只包含一个JPanel的JFrame。 我已经尝试设置Panel的大小并打包框架,但这没有效果。
如果我设置了JFrame的大小,它将改变大小,使其包含标题栏和边框。 如何设置“实际大小”,使其不包含标题栏和边框?
示例:
先谢谢你,伙计们
答案 0 :(得分:20)
您可以在JFrame上设置contentPane的preferredSize和call pack,但通常最好让组件根据其布局管理器确定的首选大小自行调整大小。
答案 1 :(得分:10)
如果您设置JPanel的首选大小,那么JFrame的pack()方法将尊重它。
答案 2 :(得分:9)
这是设置JPanel大小并打包框架的示例:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(200, 200));
frame.add(panel);
frame.pack();
frame.setVisible(true);
你尝试过这样的事吗?
答案 3 :(得分:4)
使用.getInsets
上的JFrame
方法,该方法为您提供非客户区周围尺寸的尺寸。
然后将其添加到您想要的尺寸,并使用setSize
设置尺寸。
答案 4 :(得分:2)
如果你想获得框架边框,那么首先在你的框架上使用打包,之后获取Frame Insets ,如下面的代码所示:
frame.pack();
Insets insets = frame.getInsets();
int frameLeftBorder = insets.left;
int frameRightBorder = insets.right;
int frameTopBorder = insets.top;
int frameBottomBorder = insets.bottom;
最好在 setResizable(boolean)方法后立即使用 pack 方法,因为由于某种原因可调整大小会更改框架边框,但如果您不使用resize方法然后在框架构造函数的开头使用 pack 方法。
答案 5 :(得分:0)
在JFrame中设置可用空间的实际大小可以通过设置容器的首选大小来完成
createComponents(Container container)
方法。以这种方式完成,您跳过设置的大小
通过setPreferredSize(new Dimension (width, length)
方法中的run()
整个JFrame。所以,代码看起来像这样:
@Override
public void run() {
JFrame frame = new JFrame();
// other code ...
this.createCompoents(frame.getContentPane());
}
private void createCompoents(Container container) {
// other code ...
container.setPreferredSize(new Dimension(width, length));
}