2012-04-04 8 views
0

JScrollPaneにcustomTextコンポーネントがあります。テキストが空でスクロールバーがない場合は、すべてのテキストを見ることができます。しかし、スクロールバーが表示されると、これらのスクロールバーの背後にはテキストが隠されています。 JViewPortのサイズ変更を聞くことができ、テキストコンポーネントのpreferredsizeを設定できますか?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); 

テキストがパネルの表示領域を超え、スクロールバーが表示されているときに、ビューポートのサイズがどのように変化するかを確認します。

EDIT。私のカスタムコンポーネントはJEditorPaneのサブクラスです。

+0

'私はJScrollPane'にcustomTextコンポーネントを持っています。 – mKorbel

+1

この[リンク](http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html#sizing)は、 –

+2

** ** setPrefSizeを呼び出すことはできません。つまり、プレーンなコアJEditorPaneの動作が同じであるかどうかをチェックする – kleopatra

答えて

2

これを実装する最良の方法は、カスタムコンポーネントがjavax.swing.Scrollableを実装してgetScrollableTracksViewportWidth()をtrueに戻すことです。これにより、JComponentの幅がビューポートの幅に固定されます。

関連する問題