2012-03-25 104 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

那里我可以看到resons的原因,为了更好地帮助更快地编辑您的问题[SSCCE](http://sscce.org/) – mKorbel 2012-03-25 21:00:47

+0

会倾听您对'JScrollBar'基础模型的更改? – Jeffrey 2012-03-25 21:01:46

+0

我不知道,我需要定义按这些按钮,请给出一个工作示例 – user1221483 2012-03-25 21:05:55

回答

1

的按钮在JScrollBar中的UI定义,所以你需要不工作扩展默认的UI实现。当然,这取决于平台。在我的例子中,我会告诉你如何使用BasicScrollBarUI来做到这一点。 您可以通过调用JScrollPane.setVerticalScrollBar(new CustomScrollBar()); 在你CustomScrollBar你可以做以下定义自定义的JScrollBar:

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! 
        } 
       }); 
      } 
     } 
    } 
} 

我在XP下却没有JScrollPane进行了测试。 我希望它有帮助!