簡體   English   中英

Java Swing設置“實際”幀大小(內部)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM