2010-04-30 69 views
0

我提出的圖像加載組件,其由含有一個JScrollPane,其又包含另一個的JPanel一個JPanel的。該組件所做的是允許將圖像放在其上,然後載入圖像,並將最內層的JPanel設置爲丟棄圖像的大小。這反過來導致滾動條出現,用戶可以滾動圖像。這一切工作正常。當我嘗試將圖像自動縮小到外部JPanel中的最大可見區域時,問題就出現了。在這種情況下,我會將圖像的均勻比例設置爲小於或等於外部JPanel的寬度和高度。現在發生的事情是,水平和垂直滾動條都顯示出來,表明內部JPanel比可見區域大(這不應該是這種情況)。我驗證了圖像是按比例縮放的(即最大寬度和高度得到了尊重)。我還證實,如果我將最大高度減少3個像素,則不會出現滾動條。在JScrollPane一個JPanel的不正確的大小在Java 1.5

什麼,我相信這個問題是,是,panel.getWidth()和panel.getHeight()並不會實際返回的可視區域(最大面積),該子組件可以佔用。 IE瀏覽器。 JPanel周圍的邊界可能會佔用更多的寬度和高度,或者類似的東西。

我的問題是,我該如何解決這個問題搞定。功能我要的是確定一個JPanel可以在JScrollPane中的最大尺寸,然後設置面板到規模和在它上面繪製圖片和放心,滾動窗格的滾動條將不會出現。現在滾動條被設置爲AS_NEEDED。

下面的代碼的一部分:

JPanel. Insets insets = getInsets(); 
int width = getWidth() - insets.left - insets.right; 
int height = getHeight() - insets.top - insets.bottom; 
imageScaled = ImageUtils.uniformScaleImage(imageOriginal, width, height); 

謝謝!

回答

1

功能所有我想要的是 確定一個JPanel 可以在JScrollPane

scrollPane.getViewport().getViewSize(); 
+0

謝謝,但不幸的是,這給了我JScrollPane的內部容器的尺寸最大尺寸。我想要的是滾動窗格的查看區域的大小。 IE瀏覽器。我想要一個寬度和高度,可以使內部JPanel(在滾動窗格內)適合滾動窗格內,而不會在設置爲AS_NEEDED時出現滾動條。我希望這是有道理的。 – Coder 2010-04-30 15:50:36

+0

然後使用viewport.getSize()。我認爲這兩個地方相同,但顯然不是。或者也許它的範圍大小。無論如何,你所尋求的答案都包含在視口方法中。 – camickr 2010-04-30 16:11:30

+0

謝謝,我會嘗試那些 – Coder 2010-04-30 16:55:30