2012-03-25 6 views
1

http://s019.radikal.ru/i626/1203/ae/8420ef7757f7.png의 MouseListener하는 JScrollBar에 대한 화살표 버튼

JScrollPane.getVerticalScrollBar().addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent e) { 
        System.out.println("mouseClicked"); 
     } 
     public void mousePressed(MouseEvent e) { 
        System.out.println("mousePressed"); 
     } 
     public void mouseReleased(MouseEvent e) { 
        System.out.println("mouseReleased"); 
     } 
    }); 

그것은 내가 스트립을 클릭하면 작동하지만, 난 당신이 필요하므로

+0

거기에 이유를 물어볼 수 있습니다. 더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/) – mKorbel

+0

으로 질문을 수정하십시오. 'JScrollBar'기본 모델에 대한 변경 사항을 듣고 싶습니다. ? – Jeffrey

+0

모르겠다.이 버튼을 눌러야한다는 것을 정의해야한다. 작동 예제를 입력 해주세요. – user1221483

답변

1

버튼은하는 JScrollBar의 UI에 정의 된 버튼을 클릭 할 때 작동하지 않습니다 기본 UI 구현을 확장합니다. 물론 그것은 플랫폼에 의존합니다. 나의 예에서는 BasicScrollBarUI으로 어떻게하는지 보여 줄 것이다. 당신은 다음을 수행 할 수 있습니다 CustomScrollBar에서 JScrollPane.setVerticalScrollBar(new CustomScrollBar()); 를 호출하여 사용자 정의하는 JScrollBar를 정의 할 수 있습니다 :

내가 XP에서하지만 JScrollPane없이 테스트 한
public class CustomScrollBar extends JScrollBar { 
    public CustomScrollBar() { 
     setUI(new CustomUI()); 
    } 
    class CustomUI extends BasicScrollBarUI { 
     @Override 
     protected void installListeners() { 
      super.installListeners(); 
      if (incrButton != null) { 
       incrButton.addMouseListener(new MouseAdapter() { 

        @Override 
        public void mouseClicked(MouseEvent e) { 
         //Increment button is clicked! 
        } 
       }); 
      } 
      if (decrButton != null) { 
       decrButton.addMouseListener(new MouseAdapter() { 
        @Override 
        public void mouseClicked(MouseEvent e) { 
         //Decrement button is clicked! 
        } 
       }); 
      } 
     } 
    } 
} 

. 도움이 되었기를 바랍니다.