我有一个只包含一个JPanel的JFrame窗口。
我尝试设置面板的大小并对框架进行压缩,但没有效果。
如果我设置JFrame的大小,它将改变大小以包括标题栏和边框。
如何设置“实际大小”,使其不包括标题栏和边框?
例如:
提前感谢大家。
您可以设置contentPane的preferredSize并在JFrame上调用pack,但通常最好让组件根据它们的布局管理器确定的首选大小自行调整大小。
以下是设置JPanel大小并对框架进行打包的示例:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(200, 200));
frame.add(panel);
frame.pack();
frame.setVisible(true);
你尝试过类似这样的东西吗?
如果您设置了JPanel的首选大小,那么JFrame的pack()方法将会遵守该大小。
JFrame
的.getInsets
方法可以给出非客户端区域周围的尺寸。然后将其加到所需的大小上,并使用setSize
来设置大小。frame.pack();
Insets insets = frame.getInsets();
int frameLeftBorder = insets.left;
int frameRightBorder = insets.right;
int frameTopBorder = insets.top;
int frameBottomBorder = insets.bottom;
设置JFrame中可用空间的实际大小可以通过在createComponents(Container container)
方法中设置容器的首选大小来完成。通过这种方式,您可以跳过在run()
方法中通过setPreferredSize(new Dimension(width, length))
设置整个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));
}