1

ScrolledCompositeを表示するアプリケーションがあります。ユーザーは、水平スクロールの増分が細かすぎると不満を言っています。つまり、水平スクロール矢印をクリックするたびに、現在、バーが一度に1ピクセル移動します。彼らは、個々のクリックがより大きな水平方向の動きを引き起こすことを望んでいます。誰かが私がこれを実装する方法を説明できますか?コードのスニペットは次のとおりです。

ScrolledComposite myScrolledComposite = new ScrolledComposite(parent, 
        SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);

if ( myScrolledComposite == null) {
    throw new NullPointerException("ScenePreView.java:  " + 
            "Method createPartControl()  " + 
            "ScrolledComposite myScrolledComposite == null."); 
}

Composite myComposite = new Composite(myScrolledComposite, SWT.NONE);

if ( myComposite == null) {
    throw new NullPointerException("ScenePreView.java:  " + 
            "Method createPartControl()  " + 
            "Composite myComposite == null."); 
}

myScrolledComposite.setContent(myComposite);
4

4 に答える 4

3

これはかなりうまく機能し、使用可能なデフォルトを提供するはずです。ScrolledComposite内のコントロールのサイズが変更されると、自動的に更新されます。

myComposite.addControlListener( new ControlAdapter() {
    @Override
    public void controlResized( ControlEvent e ) {
        ScrollBar sbX = scrolledComposite.getHorizontalBar();
        if ( sbX != null ) {
            sbX.setPageIncrement( sbX.getThumb() );
            sbX.setIncrement( Math.max( 1, sbX.getThumb() / 5 ) );
        }
    }
});
于 2009-08-25T21:14:42.307 に答える
2

コンポジットからスクロールバーを取得し、増分を設定します。

myScrolledComposite.getVerticalBar()。setIncrement(10);

于 2009-05-13T15:58:54.167 に答える
0

あなたが求めていた以上のものであることは承知していますが、スムーズなスクロールを実装したSWT アニメーション ツールキットをチェックすることを強くお勧めします。それはあなたのアプリケーションをよりクールにします。

あなたはそれをチェックアウトしてソースを見ることができます - これはスクロールで遊ぶ方法の良い例です (まだ少し進んでいます)。

于 2009-05-13T16:04:10.180 に答える
0

SWT Scrollbar クラスの setIncrement() メソッドを使用します。これにより、矢印ボタンを押したときにスクロール領域が移動する量を変更できます。 SWT の API リファレンスを参照してください

于 2009-05-13T15:53:58.047 に答える