多くの最新のマウスやトラックパッドと同様に、私のラップトップは垂直および水平スクロールをサポートしています。慣れれば中毒性のある機能です。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();
}
}