Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTextArea中的滚动条事件_Java_Swing - Fatal编程技术网

Java JTextArea中的滚动条事件

Java JTextArea中的滚动条事件,java,swing,Java,Swing,我有一个文本区域,每当滚动条被滚动时,我想调用一个方法。在什么情况下我应该调用该方法?我试过: private void jScrollPane1MouseReleased(java.awt.event.MouseEvent evt) { //execute(); System.out.println("Scroller Moved"); } 您应该改用mouselistener事件 如果您想了解更多信息,请在此处查看-使用mouseclicked方法,

我有一个文本区域,每当滚动条被滚动时,我想调用一个方法。在什么情况下我应该调用该方法?我试过:

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

您应该改用mouselistener事件


如果您想了解更多信息,请在此处查看-

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

您想使用JScrollBar上的
AdjustmentListener
(选择您想在其上侦听移动的方法)。下面是一个在竖条上收听的示例

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

}

你想实现什么功能?向我解释,就像向最终用户解释一样。想要在你自己的代码中访问与滚动相关的方法,会有一种非常糟糕的代码味道。对于与键盘的交互,例如使用箭头键,会有什么影响?@AndrewThompson Nick Rippe solution非常完美。我想在jtextarea中的行号发生更改时举办一次活动。Robin,Nick Rippe当我输入键或通过箭头键移动光标时,解决方案正在考虑我的目的OP已经在使用鼠标侦听器:-)显示的代码段是由可视化生成器创建的,旨在通过客户端代码充实。主要内容为+1-但下次看到setXXSize时,我可能会尝试否决;-)@kleopatra我不太确定您指的是什么-我假设
面板
面板
(或两者)上的
setPreferredSize
调用之一。如果这样做有什么问题,我会很感激你提供的信息——我没有在快速搜索中找到任何东西。在这段代码中使用它的原因是因为我想强制使用一个滚动条。很抱歉没有完全弄清楚:演示完全可以(最好有一个提示,它只用于演示)。它正在生产中code@Nick这太完美了!!!,如果stackoverflow允许的话,我会不止一次投票。。不完全是:代码段(由可视化生成器生成,可能是NetBeans)是一个回调消息,由JScrollPane上自动安装的MouseStener发送。这意味着事件始终在滚动窗格的维度内。因此,它很少被调用,因为它的大部分区域由其他组件填充。