11

内側にJScrollpaneJPanelあります(パネルにはいくつかJLabelのが含まれています)。

ビューポートのサイズだけでなく、スクロールペインのサイズを変更して、実際にそのサイズ(おそらく内部コンポーネントの推奨サイズよりも小さい)を変更したいと思います。

目標は、ユーザーがスクロールペインを小さくしすぎると、内側のパネルが(私のmiglayoutで特定の縮小の優先順位などを使用して)正常に消えることです。

4

1 に答える 1

16

おそらく最良の方法は、含まれているコンポーネントを常にビューポートと同じ幅にすることです。これを行うには、最初に含まれるコンポーネント(の子であるコンポーネント、コンストラクターJViewPortに渡されるコンポーネント、またはとして設定されるコンポーネント)を実装する必要があります。キーメソッドは、であり、を返す必要があります。 JScrollPaneviewportViewjavax.swing.ScrollablegetScrollableTracksViewportWidthtrue

これが素早く汚いスクロール可能なJPanelです:

public class ScrollablePanel extends JPanel implements Scrollable {
    public Dimension getPreferredScrollableViewportSize() {
        return getPreferredSize();
    }

    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
       return 10;
    }

    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
        return ((orientation == SwingConstants.VERTICAL) ? visibleRect.height : visibleRect.width) - 10;
    }

    public boolean getScrollableTracksViewportWidth() {
        return true;
    }

    public boolean getScrollableTracksViewportHeight() {
        return false;
    }
}
于 2010-05-11T21:53:55.913 に答える