2010-05-16 40 views
5

像許多現代鼠標和觸控板滾動,我的筆記本電腦支持垂直和水平滾動。一旦你習慣了它,這是一個令人上癮的功能。我只想讓我的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(); 
    } 
} 

回答

1

這是默認在Swing支持雖然垂直scolling擁有水平滾動優先當兩個滾動條是可見的。

我希望在Swing做新的發展不是AWT。

編輯:

您應該能夠使用Mouse Wheel Controller定製滾動速度。我從來沒有嘗試過水平滾動,讓我知道它是否工作。

+0

謝謝,Swing雖然運行得比AWT慢,但這可能只是車輪的默認配置。我真的想將AWT用於操作系統控制,但現在我將切換到擺動,反正我的大部分UI都會被我覆蓋。 – blissapp 2010-05-16 16:53:02

+0

關於慢速滾動的評論,請參閱我上面的修改。 – camickr 2010-05-16 20:29:26

+0

感謝您的更新。我嘗試了鼠標滾輪控制器類,但它使我的硬件上的滾動緩慢和不平穩。我的最終解決方案是在ScrollBars上使用setUnitIncrement()方法,我已經將細節添加到上面的代碼中。 – blissapp 2010-05-17 06:05:13

1

我的MacBookPro的觸控板導航事件開箱處理。請注意,在JScrollPane上啓用車輪事件的方法如下:setWheelScrollingEnabled