2010-04-14 62 views
0

我在此刻學習Java,並有以下問題:的Java包不調整大小

我加入我到JFrame的控制,然後包()顯示之前。

這運行的應用程序,一切都非常好。

我想知道有沒有辦法阻止用戶調整應用程序窗口的大小?

還有沒有辦法讓JLabel中的圖像隨着用戶更改應用程序窗口而展開?

目前,我把它作爲:

constraints.fill = GridBagConstraints.BOTH; 
    constraints.anchor = GridBagConstraints.CENTER; 

,它只是中心的形象,我想能夠擴大/縮小圖像。

謝謝。

+0

我不需要設置我的框架不可改變。我總是在NetBeans IDE中使用Matisse。這是最好的和免費的GUI編輯器! – 2010-04-14 17:05:46

回答

3

我想知道有沒有辦法阻止 用戶從調整應用程序 窗口?

如果你不想讓用戶調整窗口的大小都那麼你可以做

frame.setResizable (false); 



我不知道,這種技術可以與pack()同時成功使用。你當然應該嘗試,但我記得有一個問題,如果你這樣做:

frame.setResizable (false); 
pack(); 

然後pack()根本就沒有做自己應該,如果你這樣做:

pack(); 
frame.setResizable(false); 

,那麼你的窗口變得稍後更窄一點,之後只有pack()。當然,可以找到一些解決方法(或者甚至只是我不好的經歷)。

+0

this.setResizable(false);包();這工作。另一種方式是通過在控件周圍引入一些填充來產生不同的結果。 – iTEgg 2010-04-14 17:12:13

+0

@ikurtz:很好!我用java 1.4試了一下,可能自那時起就有所改變。 – Roman 2010-04-14 17:24:04

+0

感謝您的幫助。即時通訊使用Java 1.6.0_17和NetBeans 6.8。很高興它工作! – iTEgg 2010-04-14 17:26:30

2

對於第一個問題,您可以使用該方法setResizable(boolean)調整你的窗口停止用戶:

frame.setResizable(false); 

我不使用GridBagLayout,所以我不能幫你的第二個問題。

+0

第二個問題與使用GridBagLayout無關,但如何在JLabel中縮放圖像。 – jarnbjo 2010-04-14 17:03:25

1

爲了防止調整窗口大小,您可以簡單地在窗口或(J)框架上調用setResizable(false)

對於JLabel和圖像,沒有簡單的方法可以根據圖像的實際大小來縮放圖像。如果您僅爲圖片使用標籤(無文本),則可能更容易實現您自己的組件,您可以在其中自行繪製圖像。

1
also is there a way to for the image in JLabel to expand as the user changes the application window? 

是的,你需要創建自己LabelUI類,並通過setUI()將其設置爲您的標籤。 在您的自定義LabelUI類中,您將必須覆蓋getPreferredSize並根據需要繪製imageIcon。

據略有程序,你可能想看看BasicLabelUI源,瞭解如何做事。(http://www.java2s.com/Open-Source/Java-Document/Apache-Harmony-Java-SE/javax-package/javax/swing/plaf/basic/BasicLabelUI.java.htm

你可以過騎的JLabel的paintComponent() API創建自己的擴展JLabel類。