0

JScrollPane に customText コンポーネントがあります。テキストが空でスクロールバーがない場合、すべてのテキストが表示されます。ただし、スクロールバーが表示されると、一部のテキストがこれらのスクロールバーの後ろに「隠され」ます。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 のサブクラスです。

4

1 に答える 1

2

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

于 2012-04-04T16:45:24.323 に答える