2011-12-21 64 views
1

我設計了一個Swing表單。它由一個JScrollPane組成,其本身包含另一個JPanel。由於某些UI事件,Component被附加到此JPanel。它就像一個消息框,當郵件到達時郵件會附加到列表中。 問題是如何使更改顯示在此JPanel上。爲了達到這個目的,我簡單地調用了JFrame#pack()方法。但調用這個將我的框架調整到容器的大小,忽略了最初設置的界限。並且滾動條也不可見,只是隨着組件被附加到面板上,框架變得更高。我希望我的框架應保持其初始大小,並且當組件的總大小超過框架的大小時,滾動條應該起作用。我哪裏錯了?請幫忙。 這是我的初始畫面: enter image description hereJFrame得到調整大小和滾動條不可見

此屏幕是當組件被添加: enter image description here

+0

你可以添加一個屏幕截圖嗎? – 2011-12-21 06:06:32

+0

代碼在哪裏,你都說明了理論部分。請提供代碼。 – 2011-12-21 06:14:46

+0

@ProphesyAwaits我正在使用NetBeans IDE。代碼是在IDE中生成的,我應該上傳它嗎? – batman 2011-12-21 06:29:01

回答

3

當您添加部件到面板一般的代碼是:

panel.add(...); 
panel.revalidate(); 

的重新驗證()方法將重新計算面板的首選大小。如果首選大小大於滾動窗格的大小,則會出現滾動條。

當然,您必須使用佈局管理器才能自動執行此功能。

+0

你可以解釋爲什麼'JFrame#pack()'忽略'maximumSize'嗎? – COD3BOY 2011-12-21 06:21:51

+0

對不起,我不知道,我從來沒有嘗試過使用它。 – camickr 2011-12-21 06:30:09

+0

@Sanjay依賴於使用的LayoutManager,他們大多忽略了XxxSize,BoxLayout除外 – mKorbel 2011-12-21 08:15:56