JScrollPane的滚动事件

aps*_*aps 18 java swing event-handling jscrollpane

奇怪的是JScrollPane没有方法addAdjustmentListener().然而,adjustListener据说与滚动条一起使用.无论何时JScrollPane以任何一种方式滚动,我都希望发生一些事情.怎么实现这样的事情?

Jes*_*num 15

不要尝试从JScrollPane侦听更改,而是获取该滚动窗格的视口,为其添加更改侦听器:

http://download.oracle.com/javase/6/docs/api/javax/swing/JViewport.html#addChangeListener(javax.swing.event.ChangeListener)


Mic*_*ker 11

为什么不获取实际的滚动条,然后向它们添加调整侦听器?JScrollBar有一个叫做的方法addAdjustmentListener().

你可以使用getVerticalScrollBar()getHorizontalScrollBar()从中得到JScrollBar一个JScrollPane


eke*_*ner 6

根据Jesse Barnum的说法:

// requiring that you already have JPanel additionsPane inside 
//  JScrollPane additionsScrollPane inside JFrame frame ...

additionsScrollPane.getViewport().addChangeListener(new ListenAdditionsScrolled());

public class ListenAdditionsScrolled implements ChangeListener{
    public void stateChanged(ChangeEvent e){
        additionsPane.revalidate();
        frame.repaint();
    }
}
Run Code Online (Sandbox Code Playgroud)