1

http://s019.radikal.ru/i626/1203/ae/8420ef7757f7.png

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

如果我单击条带,它可以工作,但当我单击按钮时它不起作用

4

1 回答 1

1

这些按钮是在 JScrollBar 的 UI 中定义的,因此您需要扩展默认的 UI 实现。当然,它取决于平台。在我的示例中,我将向您展示如何使用BasicScrollBarUI. 您可以通过调用自定义 JScrollBar 来定义自定义滚动条,JScrollPane.setVerticalScrollBar(new CustomScrollBar()); 您可以执行以下操作:

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. 我希望它有帮助!

于 2013-02-26T13:27:51.660 回答