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実装を拡張する必要があります。もちろん、プラットフォームに依存します。私の例では、でそれを行う方法を示しますBasicScrollBarUIJScrollPane.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。お役に立てば幸いです。

于 2013-02-26T13:27:51.660 に答える