2010-05-16 3 views
5

많은 현대 마우스 및 트랙 패드와 마찬가지로 랩탑에서도 수직 및 수평 스크롤을 지원합니다. 일단 익숙해지면 중독성이있는 기능입니다. 간단히 자바 애플리케이션이 트랙 패드/마우스 휠을 통한 수평 스크롤링을 지원하기를 원하지만 어디에서나 자바에서 검색이 불가능한 것처럼 보인다.자바 AWT ScrollPane에서 수평 마우스 휠 스크롤을 위해 내 트랙 패드를 사용하는 방법

난 정말 사람이 어떻게 든 잘못하고 있어요 있음을 말해하려면이 기능을 이미 요청 행동 : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6440198

이 간단한 일을 할 수 없다는 사실 난 응용 프로그램에 대한 계약 위반이다 작업. 사실, 내가 상상할 수있는 앱이라면! Java 백엔드에 약간의 시간을 투자 했으므로이 겉으로보기에는 단순한 문제에 대한 해결책을 찾고 싶습니다.

질문이 동작을 구현하려면 어떻게해야합니까? 원시 OS 레벨 이벤트가 자바에 의해 나에게 노출 되더라도 처음부터이 코드를 작성해야합니까?

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

양쪽 모두의 스크롤을 볼 때 수직 scolling가 수평 스크롤을 통해 우선 순위를 가지고 있지만 이것은 스윙에서 기본적으로 지원됩니다 모두 작동합니다.

AWT가 아닌 Swing에서 새로운 개발이 이루어질 것으로 기대됩니다.

편집 :

당신은 스크롤 속도를 사용자 정의 할 Mouse Wheel Controller 사용할 수 있어야합니다. 수평 스크롤을 시도한 적이 없지만 작동하는지 알려주세요.

+0

감사합니다. 스윙은 AWT보다 천천히 작동하지만 휠의 기본 구성 일 수 있습니다. OS 컨트롤에 AWT를 사용하고 싶었지만 대신 스윙으로 전환 할 것입니다. 대부분의 UI가 내게 우선 적용됩니다. – blissapp

+0

느린 스크롤에 대한 설명은 위의 편집을 참조하십시오. – camickr

+0

업데이트 해 주셔서 감사합니다. Mouse Wheel Controller 클래스를 사용해 보았지만 내 하드웨어에서 스크롤이 느리고 잘 움직이지 않게되었습니다. 내 마지막 해결책은 ScrollBars 자체에서 setUnitIncrement() 메서드를 사용하는 것이 었습니다. 위 코드에 세부 사항을 추가했습니다. – blissapp

1

내 MacBookPro의 트랙 패드에서 내비게이션 이벤트는 기본적으로 처리됩니다. 휠 이벤트를 활성화하는 방법은 JScrollPane입니다. setWheelScrollingEnabled