我正在使用Swing中的Touch User界面.虽然我知道这不是最佳的,但我的截止日期很短,没有时间触摸屏特定的GUI包(如果有的话).
我希望我的用户能够在屏幕上"滑动"他们的手指,并且我制作的特殊JScrollPane的视图随之移动.代码很简单 -
public class PanScrollPane extends JScrollPane implements MouseMotionListener{
public PanScrollPane() {
super();
this.addMouseMotionListener(this);
}
@Override
public void mouseDragged(MouseEvent arg0) {
System.out.println("Mouse Dragged!");
}
@Override
public void mouseMoved(MouseEvent arg0) {
System.out.println("Mouse Moved!");
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是JScrollPane是各种JComponents的容器.当我第一次开始研究这个时,我发现MouseMovedEvent和MouseDraggedEvent会向上传播'GUI树',直到他们遇到一个带有专门针对该事件的侦听器的Component.现在看来,我添加到panScrollPane的任何组件都会阻止任何这些MouseMotion事件,让我无法平移.
panScrollPane.add(new JButton("This thing blocks any mouse motion events"));
Run Code Online (Sandbox Code Playgroud)
我想用手传播MouseEvent(将侦听器添加到每个组件然后让它们将事件发送给它们的父组件)都可以.然而,这是一个非常耗时的事业,我宁愿把时间花在其他东西的工作,我想知道如果任何人都知道任何变通针对此问题.
感谢您的阅读,并希望感谢您的回答!:)
编辑:让我的意图更清晰.我只希望panPanel捕获mousemotion事件,任何其他事件(如MouseClick,MouseRelease)应该正常处理