2

我有一个文本区域,每当滚动条滚动时,我都想调用一个方法。在什么事件上我应该调用该方法?我试过了:

private void jScrollPane1MouseReleased(java.awt.event.MouseEvent evt) {
      //execute();  
     System.out.println("Scroller Moved");       
}
4

3 回答 3

3

您想AdjustmentListener在 JScrollBar 上使用 (选择您要在其上收听移动的那个)。这是在竖线上聆听的示例。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TempProject extends JPanel{

    public static void main(String args[])    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                JPanel panel = new JPanel();
                panel.setPreferredSize(new Dimension(300, 2000));
                JScrollPane pane = new JScrollPane(panel);
                pane.setPreferredSize(new Dimension(400, 300));
                pane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){

                    @Override
                    public void adjustmentValueChanged(AdjustmentEvent e) {
                        System.out.println("Hi Mom!");
                    }});

                frame.setContentPane(pane); 
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}
于 2012-08-22T14:20:10.690 回答
2

您应该改用 mouselistener 事件。

如果您想了解更多信息,请查看此处 - http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

于 2012-08-22T14:11:33.810 回答
1

使用 mouseclicked 方法,然后使用 getX() 和 getY() 获取坐标,然后使用 if 测试,测试坐标是否在 JScrollPane 的尺寸范围内。只要记住实现 mouselister 并添加所有继承的抽象方法 :)

于 2012-08-22T14:16:06.413 回答