我有一个文本区域,每当滚动条滚动时,我想调用一个方法。在什么情况下我应该调用这个方法?我试过了:JTextArea滚动条事件
private void jScrollPane1MouseReleased(java.awt.event.MouseEvent evt) {
//execute();
System.out.println("Scroller Moved");
}
我有一个文本区域,每当滚动条滚动时,我想调用一个方法。在什么情况下我应该调用这个方法?我试过了:JTextArea滚动条事件
private void jScrollPane1MouseReleased(java.awt.event.MouseEvent evt) {
//execute();
System.out.println("Scroller Moved");
}
你想在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);
}
});
}
}
您应该使用mouselistener事件来代替。
如果您想了解更多关于它检查出来这里 - http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
OP已经在使用mouseListener :-)所显示的代码片段由可视化构建器创建,旨在通过客户端充实码。 – kleopatra
使用的mouseClicked方法,然后使用的getX()和的getY()获取坐标,然后用if测试,测试,看看坐标是否在JScrollPane的维度内。只记得实现鼠标器并添加所有继承的抽象方法:)
ehh ..不完全是:片段(由可视构建器生成,可能是NetBeans)是由JScrollPane上自动安装的MouseListener发出的回调消息。这意味着事件在scrollPane的维度内是_always_。因此它很少会被调用,因为它的大部分区域都被其他组件填充。 – kleopatra
你试图实现什么***功能?向我解释你可能会向最终用户解释的方式。想要在自己的代码中访问与滚动相关的方法,对它有着极其糟糕的代码味道。 –
什么用于与键盘进行交互,例如使用箭头键? – Robin
@AndrewThompson Nick Rippe解决方案非常完美。当jtextarea中的行号发生变化时,我想要一个事件。 Robin,Nick Rippe解决方案正在照顾我的目的,因为我输入密钥或通过箭头键移动光标 – FirmView