2012-04-04 33 views
0

我在JScrollPane中有一個customText組件。當文本爲空並且沒有滾動條時,我可以看到所有文本。但是當滾動條變得可見時,這些滾動條後面會隱藏一些文本。 也許我可以聽JViewPort大小更改併爲我的文本組件設置首選項大小?Java。搖擺。 JScrollPane的JViewport大小已更改

JComponent component = getResTextArea(); 
component.setPreferredSize(RES_TEXT_AREA_PREFFERED_SIZE); 
JScrollPane scrollPane = new JScrollPane(component); 
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
scrollPane.getVerticalScrollBar().setUnitIncrement(UNIT_INCREMENT); 
panel.add(scrollPane); 

我看到當文本超過面板的可見區域和滾動條顯示時視口的大小如何變化。

編輯。我的自定義組件是JEditorPane的一個子類。

+0

'我在JScrollPane中有一個customText組件,請根據...? – mKorbel 2012-04-04 17:06:24

+1

希望這[LINK](http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html#sizing)可以幫助:-) – 2012-04-04 17:19:33

+2

**不要**調用setPrefSize,永遠!也就是說,爲了追蹤問題,檢查一個普通的核心JEditorPane是否具有相同的行爲 – kleopatra 2012-04-05 10:19:12

回答

2

實現此目的的最佳方法是讓您的自定義組件實現javax.swing.Scrollable,getScrollableTracksViewportWidth()返回true。這會將JComponent的寬度鎖定到視口的寬度。