Java 多点触控秋千

Java 多点触控秋千,java,swing,multi-touch,Java,Swing,Multi Touch,我的印象是触摸屏模拟了鼠标事件,但是如何处理多个触摸事件 我已经尝试使用MouseMotionListener添加JPanel,并将值输出到控制台。然而,我只得到屏幕上第一次触摸的值 然后我试着将屏幕从中间分开,两边各有一个JPanel,两边各有一个单独的MouseMotionListener,每个都输出到控制台 在这个配置中,我仍然只能在屏幕上看到第一个手指的值 以下是我到目前为止的情况: JPanel jPaneL = new JPanel(); jPaneL.setName("Left")

我的印象是触摸屏模拟了鼠标事件,但是如何处理多个触摸事件

我已经尝试使用
MouseMotionListener
添加
JPanel
,并将值输出到控制台。然而,我只得到屏幕上第一次触摸的值

然后我试着将屏幕从中间分开,两边各有一个
JPanel
,两边各有一个单独的
MouseMotionListener
,每个都输出到控制台

在这个配置中,我仍然只能在屏幕上看到第一个手指的值

以下是我到目前为止的情况:

JPanel jPaneL = new JPanel();
jPaneL.setName("Left");
jPaneL.addMouseMotionListener(mouseMotionL);
jPaneL.setBounds(0, 0, 960, 1280);
jPaneL.setBackground(Color.BLACK);

JPanel jPaneR = new JPanel();
jPaneR.setName("Right");
jPaneR.addMouseMotionListener(mouseMotionR);
jPaneR.setBounds(960, 0, 960, 1080);
jPaneR.setBackground(Color.RED);

jFrame.add(jPaneL);
jFrame.add(jPaneR);
我的MouseMotionListener,
L
R
是完全相同的

private static MouseMotionListener mouseMotionX = new MouseMotionListener() {

    @Override
    public void mouseDragged(MouseEvent e) {
        String s = ((JPanel) e.getSource()).getName();
        System.out.println(s);
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        String s = ((JPanel) e.getSource()).getName();
        System.out.println(s);
    }
};

我已经找到了支持多点触摸的库,但我希望在不使用第三方库的情况下实现这一点。我怎样才能只使用本地鼠标侦听器来实现这一点呢?

首先,我想说的是,我真的建议在这样的应用程序中使用JavaFX。 您还可以使用JFXPanel在现有的swing应用程序中运行


不过,我听说了Java应用程序中的多点触控框架,它也支持Swing。我没有用过它。所以我不能告诉你它有多好。

JavaFX——稍后你会感谢我的-P--不是,但说真的,Swing非常古老,可能无法满足现代触摸屏设备的需求。JavaFX(Java8中的Swing替代品)有很多内置的东西,可以帮助解决触摸屏设备的问题。您可以将JavaFX与java7一起使用,您只需要在类路径中包含jfxrt.jar lib。我主要从事Android开发,不久前学习了Swing,所以这就是我尝试为我的surface构建此库的方式。谢谢,我将研究如何使用JavaFX。如果您决定用java编写代码,它与swing语法非常相似。。。javafx的另一个选择是,您可以使用FXML(xml的子集)编写ui,并且可以非常快速地编写复杂的ui,然后在java代码中添加功能。查看SceneBuilder以获得一个UI,该UI允许您通过拖放创建FXML文档(其官方版本来自oracle)。如果使用javafx,还可以使用CSS对程序进行蒙皮。有很多东西值得喜爱:)我的布局将非常动态,所以这似乎是最好的方法。当我学习JavaFX时,我会把我的发现发回来。再次感谢。:)同时,如果有人发布了Swing的答案,我也不会失望。哈哈。一些示例代码: