2014-03-03 48 views
5

我在觸摸屏模擬鼠標事件的印象之下,但是我將如何處理多個觸摸事件?Swing中的多點觸控

我已經嘗試添加JPanelMouseMotionListener並將值輸出到控制檯。但是,我只能獲得屏幕上第一次觸摸的值。

然後我嘗試將屏幕向下分割,兩側各有一個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,LR是完全一樣的。

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); 
    } 
}; 

我發現支持多點觸摸的庫,但我正在尋找這樣做,而不使用第三方庫。我如何才能使用本地鼠標偵聽器來做到這一點?

+2

JavaFX--稍後你會感謝我;-P--不過,儘管非常認真,但Swing已經很老了,可能無法滿足現代觸摸屏設備的需求。 JavaFX(Java8中的Swing替代品)有很多內置的東西可以幫助解決觸摸屏設備的問題。您可以將JavaFX與java7一起使用,您只需將jfxrt.jar包含在您的類路徑中即可。 – SnakeDoc

+1

我主要做Android-Dev,前一段時間學過Swing,所以這就是我試圖爲我的表面構建它的原因。謝謝,我會研究使用JavaFX。 –

+1

如果您決定在java中編寫代碼,則它與swing語法非常相似... javafx的另一個選項是您可以使用FXML(xml的子集)編寫ui,並且非常快速地寫出複雜的UI,然後在Java代碼,你只需添加功能。查看SceneBuilder的UI,可以通過拖放來創建一個FXML文檔(其官方來自oracle)。如果你使用javafx,你也可以使用CSS爲你的程序加皮膚。有很多愛:) – SnakeDoc

回答

2

首先我想說,我真的會推薦使用JavaFX來處理這樣的應用程序。 您也可以在使用JFXPanel的現有swing應用程序中使用integrate your JavaFX project

但是我聽說過MT4j這是一個支持Swing的Java應用程序多點觸控框架。我沒有用過它。所以我不能告訴你它有多好。

+0

一些示例代碼:http://mt4j.googlecode.com/svn/trunk/examples/basic/javaGUI/StartSwingExample.java – Lars