[英]Java Swing set “actual” Frame size (inside)
我有一個只包含一個JPanel的JFrame。 我已經嘗試設置Panel的大小並打包框架,但這沒有任何效果。
如果我設置JFrame的大小,它將更改大小,使其包含標題欄和邊框。 如何設置“實際大小”,使其不包含標題欄和邊框?
例:
先謝謝你,伙計們
您可以在JFrame上設置contentPane的preferredSize和call pack,但通常最好讓組件根據其布局管理器確定的首選大小自行調整大小。
如果您設置JPanel的首選大小,那么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);
你嘗試過這樣的事嗎?
在JFrame
上使用.getInsets
方法,該方法為您提供非客戶區域周圍大小的維度。
然后將其添加到您想要的大小,並使用setSize
設置大小。
如果你想獲得Frame邊框,那么首先在你的框架上使用pack ,之后獲得如下代碼中的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方法。
可以通過在createComponents(Container container)
方法中設置容器的首選大小來設置JFrame中可用空間的實際大小。 以這種方式完成,你跳過設置整個JFrame的大小通過setPreferredSize(new Dimension (width, length)
run()
方法中的setPreferredSize(new Dimension (width, length)
。所以,代碼將如下所示:
@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));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.