События Page Up/Down в JScrollBar

Я показываю html-файл в JEditorPane внутри JScrollPane внутри JPanel внутри JFrame. Как я могу добавить прослушиватель для обнаружения событий «Page Down» и «Page Up»?

Вот мой код:

public class Test_Url extends JPanel {

    JEditorPane editor;
    JScrollPane scroller;
    String source = "test.html";

    Test_Url(){
        super();
        setLayout(new BorderLayout());
        editor = new JEditorPane();
        editor.setEditable(false);
        File file = new File(source);
        String page = "file:///" + file.getAbsolutePath();
        try {
            editor.setPage(page);
        } catch (IOException ex) {
            Logger.getLogger(Test_Url.class.getName()).log(Level.SEVERE, null, ex);
        }

        scroller = new JScrollPane(editor, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scroller.setPreferredSize(new Dimension(500, 600));  
        add(scroller, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new Test_Url());
        frame.pack();
        frame.setVisible(true);
    }
}

Спасибо!


person Serg    schedule 29.11.2013    source источник


Ответы (1)


Вы можете добавить AdjustmentListener к JScrollBar области прокрутки.

Я не думаю, что он скажет вам, был ли он прокручен вверх или вниз, поэтому вам нужно будет отслеживать последнее значение и сравнивать его с текущим значением.

person camickr    schedule 29.11.2013
comment
Параметр AdjustmentEvent имеет поле типа int, одно из которых BLOCK_INCREMENT, так что вполне возможно, что он вам подскажет. 1+ - person Hovercraft Full Of Eels; 29.11.2013
comment
@HovercraftFullOfEels, хорошая мысль. Я должен был посмотреть на API повнимательнее :) - person camickr; 29.11.2013
comment
Спасибо вам обоим. К сожалению, тип AdjustmentEvent всегда отображается как TRACK независимо от действий пользователя. Во всяком случае, я мог определить действие по изменению положения вертикальной полосы прокрутки. Page Up/Down генерируют только одно событие. - person Serg; 29.11.2013