2016-04-21 77 views
0

我正在構建一個程序並在多個操作系統上對其進行處理。 Windows 10和Windows 7.當我爲Windows 10或Windows 7正確設置最小大小時,它適用於該操作系統,但會混淆其他操作系統。有沒有辦法讓setMinimumSize調整邊界厚度?或者有沒有辦法獲得該操作系統邊框的厚度?或者有沒有辦法將JFrame的最小尺寸設置爲打開時的大小?任何幫助表示讚賞。謝謝。如何設置JFrame的最小尺寸並調整框架厚度?

回答

4

請勿設置最小尺寸。佈局經理的工作是確定組件的大小。佈局管理器將在所有操作系統上完成它的工作。

所有你需要做的就是將組件添加到您的面板/幀,然後使用:

frame.pack(); 
frame.setVisible(); 

pack()方法調用佈局管理器,以便所有的組件將是適當的大小。

閱讀有關Layout Managers的Swing教程的部分以獲取更多信息和工作示例。我建議你將教程加入書籤,以便教程所有Swing基礎知識。

我不希望用戶能夠設置框架的大小低於一定的大小。

當一個應用程序告訴我我可以製作框架有多小(大)時,這是非常煩人的。桌面是我的空間,如果我想讓它變小(更大),那麼你不應該在意。如果我缺少信息,我可以稍後將框架放大(更小)。您的框架設計應該靈活以允許調整大小。

在任何情況下,你可以通過做類似設置最低:

frame.pack(); 
frame.setVisible(); 
frame.setMinimumSize(frame.getSize()); 
+0

我這樣做是爲了初步設置大小,但是對於程序的持續時間,我不希望用戶能夠將幀的大小設置爲低於特定大小。 –

+0

@GnarlyNwwhal,見編輯... – camickr

+0

好的,謝謝。我將它設置爲最小尺寸的原因是因爲我創建的遊戲是一個集合尺寸。它爲所有的精靈使用了BufferedImages,所以我沒有辦法讓它在java中擴展它們。如果您對如何使這一點更好有任何想法,我會非常感激。 –

-1

我只是碰到了使用Java 8 MacOS的這樣一個問題,我希望用戶能夠調整窗口的大小,但服從由佈局管理器計算的最小尺寸。不幸的是,控制窗口大小的AWT代碼只有在明確設置的情況下才會查看最小大小。

這是我提出的解決方案。我重寫在框架上的doLayout()方法:

@Override 
public void doLayout() 
{ 
    super.doLayout(); 

    LayoutManager m = getLayout(); 
    if (m != null) { 
     Dimension d = m.minimumLayoutSize(this); 
     setMinimumSize(d); 
    } 
} 

現在,每次佈局重新計算時間,新的最小大小被緩存爲一個明確的設定值,讓AWT會注意它。