デフォルトでは、ScrollPanel
のoverflow
プロパティは に設定されておりauto
(つまり、必要に応じてスクロールバーが表示されます)、ほとんどのクロスブラウザー ソリューションが得られます。そのため、このようなスクロールバーをいつ表示するかはブラウザ次第です。また、scrollPanel.setAlwaysShowScrollBars(false)
構築時に(initialize()
メソッド内で)すでに呼び出されているため、呼び出しは役に立ちません。
とにかく、あなたが要求しているのは既知の問題であることがわかりました。
水平スクロールバーを常に非表示にしたい場合はoverflow-x: hidden
、スクロール可能な要素にプロパティを設定する必要がありScrollPanel
ます(試したように、そのようなパネルはoverflow
プロパティを持つ単純な div ではありません)。試してみてください:
public class MyScrollPanel extends ScrollPanel {
public void setAlwaysHideHorizontalScrollBar(boolean alwaysHide) {
getScrollableElement().getStyle().setOverflowX(alwaysHide ? Overflow.HIDDEN : Overflow.AUTO);
}
// ... and the like.
}
上記を設定すると、一部のブラウザーでは水平方向にスクロールできなくなることに注意してください。またoverflow-x/y
、CSS3 プロパティoverflow
ですが、CSS2 も同様です。したがって、これはあなたが求めているものではないかもしれません。
このような場合、スクロールバーを非表示にしながらスクロールできるようにするために、いくつかの CSS トリックが役立ちます。
もう1つのオプションは、CustomScrollPanel
ウィジェットを使用することです。これにより、たとえばカスタムスクロールバーに不透明度ゼロのスタイルを提供することでスクロールバーを非表示にすることができます(最高のものではありませんが、難しいです)。
もちろん、SimplePanel
問題で提案されているように、必要なすべてのスタイルを使用して、独自の div ベースのウィジェット (おそらく を拡張) をロールアウトすることもできます。