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发送。这意味着事件始终在滚动窗格的维度内。因此,它很少被调用,因为它的大部分区域由其他组件填充。