JScrollPanel
ビューの幅を制限するにはどうすればよいですか?私はどんな場合でも水平スクロールを起こさせたくありません。私は自分自身にJViewport
を供給しようとしましたが、それはあまり役に立ちません。私はその最大幅をとる供給JScrollPane
JScrollPaneビューの幅を制限する
Container fpdp = ....
JScrollPane sp = new JScrollPane();
sp.setViewport(new WidthRestrictingViewport(fpdp));
sp.setViewportView(fpdp);
contents
インスタンスを作成
private static class WidthRestrictingViewport extends JViewport {
private Container contents;
public WidthRestrictingViewport(final Container cnts) {
contents = cnts;
}
@Override
public Dimension getPreferredSize() {
if (getParent() instanceof JScrollPane) {
JScrollPane sp = (JScrollPane) getParent();
return new Dimension(sp.getWidth(), contents.getHeight());
}
return super.getPreferredSize();
}
@Override
public Dimension getMaximumSize() {
return getPreferredSize();
}
}
とコードは、しかし、私は、その幅はせいぜいJScrollPane
幅ので、水平スクロールは文句を言わない起こらないようにしたいです。私は間違って何をしていますか?
質問が分かりません。 'JScrollPane'の内容が、' JScrollPane'の実際のサイズよりも広い場合、どうなるでしょうか。単に切断する?その場合は、スクロールバーを非表示にすることを検討することもできます( 'JScrollPane#getHorizontalScrollBar#setVisible(false)'); – Robin
@Robin、Not Cut。ビューの幅をスクロールペインの幅に縮小します。境界線のレイアウトとコンテンツが中央に配置されたパネルを想像してみてください。しかし、この場合、コンテンツの幅はパネルの幅に制限され、内容の高さは必要に応じて大きくなることがあります(スクロールバーの追加による)。 –
私は、JViewPortがそれが達成できる幅に関して制限を設けるのは、JViewPortの責任ではないと思っています。これは、ビュー自体についてです。 ['Scrollable#getScrollableTracksViewportWidth'](http://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html)インタフェースを見てください。 ://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html#getScrollableTracksViewportWidth%28%29) – MadProgrammer