Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 JTable按鼠标位置滚动_Java_Mouse_Jtable_Scroll_Position - Fatal编程技术网

Java JTable按鼠标位置滚动

Java JTable按鼠标位置滚动,java,mouse,jtable,scroll,position,Java,Mouse,Jtable,Scroll,Position,是否可以根据鼠标位置将行置于JTable滚动列表中 i、 e.如果光标接近表格顶部,则开始向上滚动;如果光标接近表格底部,则开始向下滚动 与as3中的这种效果类似: 我目前正在使用: int row = table.rowAtPoint(e.getPoint()); Rectangle r = table.getCellRect(row,0,true); table.scrollRectToVisible(r); 在mouseMoved侦听器中,当光标到达顶行/底行时,该侦听器滚动一次。不过

是否可以根据鼠标位置将行置于JTable滚动列表中

i、 e.如果光标接近表格顶部,则开始向上滚动;如果光标接近表格底部,则开始向下滚动

与as3中的这种效果类似:

我目前正在使用:

int row = table.rowAtPoint(e.getPoint());
Rectangle r = table.getCellRect(row,0,true);
table.scrollRectToVisible(r);

在mouseMoved侦听器中,当光标到达顶行/底行时,该侦听器滚动一次。不过,我不确定如何让它在此之后继续滚动(目前用户必须不断地移动鼠标才能让它继续滚动)。

我想当鼠标进入桌子时,您需要启动一个摆动计时器。在mouseMoved事件中,您可以更改计时器间隔,使其更快或更慢,具体取决于鼠标相对于桌面/底部的位置。然后,当计时器启动时,您可以使用MouseInfo类(或保存上次鼠标移动的点)获取鼠标位置,以确定是否向上/向下滚动一行。

非常感谢您的回答。我考虑过计时器选项,但我没有考虑在Mouseenterned上启动它,也没有考虑简单地保存最后一个mouseMoved点——这两个选项都非常有用。但是,我仍然不知道如何根据鼠标相对于桌面/底部的位置来计算适当的间隔。有没有一种简单的方法可以知道屏幕上当前显示了多少行,以及这些行的范围?e、 g.第6行至第34行当前处于视图中,鼠标位于第10行上方。再次感谢您的回答。忽略我最后的评论,只需找到一种方法即可(使用JViewport并在每次视口更改时触发)。