Eclipse 如何接受触摸事件和鼠标事件来检测控件何时被单击?
我已经做了一个虚拟键盘,它在使用鼠标时工作得很好。然而,我很难让它在触摸屏上正常工作 对于正常操作,它工作正常。我按下屏幕并释放。这将引发一个Eclipse 如何接受触摸事件和鼠标事件来检测控件何时被单击?,eclipse,swt,Eclipse,Swt,我已经做了一个虚拟键盘,它在使用鼠标时工作得很好。然而,我很难让它在触摸屏上正常工作 对于正常操作,它工作正常。我按下屏幕并释放。这将引发一个MouseDown事件,然后引发一个MouseUp事件。这没关系 然后我想在一个按键上添加一个弹出窗口,按下并按住500毫秒可以触发该按键。使用鼠标时,这不是问题,但我现在看到,由触摸触发的鼠标事件仅在释放触摸后引发。延迟后不可能触发弹出窗口 接下来,我在虚拟按键中添加了TouchListeners,并认为问题已经解决,直到我意识到鼠标事件仍然会引发,导致
MouseDown
事件,然后引发一个MouseUp
事件。这没关系
然后我想在一个按键上添加一个弹出窗口,按下并按住500毫秒可以触发该按键。使用鼠标时,这不是问题,但我现在看到,由触摸触发的鼠标事件仅在释放触摸后引发。延迟后不可能触发弹出窗口
接下来,我在虚拟按键中添加了TouchListener
s,并认为问题已经解决,直到我意识到鼠标事件仍然会引发,导致两次“按键”按下,一次是触摸,另一次是鼠标
我想保持这两个选项打开,以便可以使用触摸屏或鼠标。因此,我的问题是:如果我已经使用TouchListener
处理了事件,如何防止引发鼠标事件
(在Windows 10上使用eclipse开普勒和Java7)
我认为这将是最容易处理在更高的水平,作为一个去盎司。如果在很短的时间内从一个键获得两个onKeyUp()事件,请忽略第二个。(使用Event.time字段,而不是处理事件的时间)
TouchListener touchListener = new TouchListener() {
boolean down = false;
@Override
public void touch(TouchEvent e) {
for (Touch t : e.touches) {
if(t.primary) {
if((t.state & SWT.TOUCHSTATE_DOWN) == SWT.TOUCHSTATE_DOWN) {
if(!down) {
down = true;
onKeyDown();
}
}
if((t.state & SWT.TOUCHSTATE_UP) == SWT.TOUCHSTATE_UP) {
if(down) {
down = false;
onKeyUp();
}
}
}
}
}
};
MouseAdapter mouseListener = new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
onKeyDown();
}
@Override
public void mouseUp(MouseEvent e) {
onKeyUp();
}
};
Label myKey = new Label(panel, 0);
myKey.setTouchEnabled(true);
myKey.addMouseListener(mouseListener);
myKey.addTouchListener(touchListener);