6

多くの最新のマウスやトラックパッドと同様に、私のラップトップは垂直および水平スクロールをサポートしています。慣れれば中毒性のある機能です。Javaアプリでトラックパッド/マウスホイールを介した水平スクロールをサポートしたいのですが、検索するすべての場所で、これはJavaでは不可能なようです。

どういうわけか間違っていることを誰かに教えてもらいたいのですが、この機能はすでに要求されている動作です: http://bugs.sun.com/bugdatabase/view_bug.do? bug_id=6440198

この単純なことを実行できないことは、実際には私が取り組んでいるアプリの取引を妨げるものです。実際、私が想像できるどのアプリでも!私はJavaバックエンドに少し時間を費やしたので、この一見単純なことの解決策を本当に見つけたいと思います。

質問は、この動作を実装するために何ができるでしょうか?生のOSレベルのイベントはJavaによっても公開されていますか?それでは、これを最初から作成する必要がありますか?

import java.awt.*;

public class ScrollExample extends Canvas {

    public void paint(Graphics g) {

        g.setColor(Color.green);
        g.fillOval(0,0,400, 400);

    }

    public static void main(String[] args) {

        ScrollExample b = new ScrollExample();
        Frame f = new Frame ("Scroll Example");

        ScrollPane scroller = new ScrollPane (ScrollPane.SCROLLBARS_ALWAYS);
        scroller.add(b,"Center");
        f.setPreferredSize(new Dimension(500,500));
        f.add ("Center",scroller);
        f.pack();
        f.show();

    }

}

スイングの例は、水平スクロールと垂直スクロールの両方で機能します

import java.awt.*;
import javax.swing.*;

public class ScrollExample extends JPanel { 

    public void paint(Graphics g) {

        super.paint(g);

        g.setColor(Color.green);
        g.fillOval(0,0,400, 400);

    }

    public static void main(String[] args) {

        JFrame f = new JFrame ("Scroll Example");
        ScrollExample p = new ScrollExample();
        p.setPreferredSize(new Dimension(1000, 1000));

        JScrollPane scroller = new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scroller.getHorizontalScrollBar().setUnitIncrement(10);
        scroller.getVerticalScrollBar().setUnitIncrement(10);

        f.setPreferredSize(new Dimension(500,500));
        f.add (scroller,BorderLayout.CENTER);
        f.pack();
        f.show();
    }
}
4

2 に答える 2

1

これは Swing でデフォルトでサポートされていますが、両方のスクロールバーが表示されている場合は、垂直方向のスクロールが水平方向のスクロールよりも優先されます。

新しい開発は AWT ではなく Swing で行われることを期待しています。

編集:

マウス ホイール コントローラーを使用して、スクロール速度をカスタマイズできるはずです。水平スクロールで試したことがないので、うまくいくかどうか教えてください。

于 2010-05-16T15:51:44.090 に答える
1

私の MacBookPro のトラックパッドのナビゲーション イベントは、そのままで処理されます。JScrollPaneホイール イベントを有効にする メソッドがあることに注意してください。setWheelScrollingEnabled

于 2010-05-16T16:00:59.257 に答える