内側にJScrollpane
がJPanel
あります(パネルにはいくつかJLabel
のが含まれています)。
ビューポートのサイズだけでなく、スクロールペインのサイズを変更して、実際にそのサイズ(おそらく内部コンポーネントの推奨サイズよりも小さい)を変更したいと思います。
目標は、ユーザーがスクロールペインを小さくしすぎると、内側のパネルが(私のmiglayoutで特定の縮小の優先順位などを使用して)正常に消えることです。
内側にJScrollpane
がJPanel
あります(パネルにはいくつかJLabel
のが含まれています)。
ビューポートのサイズだけでなく、スクロールペインのサイズを変更して、実際にそのサイズ(おそらく内部コンポーネントの推奨サイズよりも小さい)を変更したいと思います。
目標は、ユーザーがスクロールペインを小さくしすぎると、内側のパネルが(私のmiglayoutで特定の縮小の優先順位などを使用して)正常に消えることです。
おそらく最良の方法は、含まれているコンポーネントを常にビューポートと同じ幅にすることです。これを行うには、最初に含まれるコンポーネント(の子であるコンポーネント、コンストラクターJViewPort
に渡されるコンポーネント、またはとして設定されるコンポーネント)を実装する必要があります。キーメソッドは、であり、を返す必要があります。 JScrollPane
viewportView
javax.swing.Scrollable
getScrollableTracksViewportWidth
true
これが素早く汚いスクロール可能な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;
}
}