像許多現代鼠標和觸控板滾動,我的筆記本電腦支持垂直和水平滾動。一旦你習慣了它,這是一個令人上癮的功能。我只想讓我的Java應用程序通過觸控板/鼠標滾輪支持水平滾動,但是在我搜索的任何地方,似乎這在Java中都是不可能的。如何使用我的觸控板的水平滾輪在Java AWT的ScrollPane
我真的希望有人告訴我,我不知怎麼做是錯誤的,這一特徵已經要求行爲:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6440198
沒有能力做這個簡單的事情實際上是應用程序我是一個大忌工作。事實上,我可以設想任何應用程序!我在Java後端投入了一些時間,所以我很想爲這個看似簡單的事情找到一個解決方案。
的問題是什麼我可以做些什麼來實現這一行爲?原始的操作系統級別的事件是否由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();
}
}
謝謝,Swing雖然運行得比AWT慢,但這可能只是車輪的默認配置。我真的想將AWT用於操作系統控制,但現在我將切換到擺動,反正我的大部分UI都會被我覆蓋。 – blissapp 2010-05-16 16:53:02
關於慢速滾動的評論,請參閱我上面的修改。 – camickr 2010-05-16 20:29:26
感謝您的更新。我嘗試了鼠標滾輪控制器類,但它使我的硬件上的滾動緩慢和不平穩。我的最終解決方案是在ScrollBars上使用setUnitIncrement()方法,我已經將細節添加到上面的代碼中。 – blissapp 2010-05-17 06:05:13