我在觸摸屏模擬鼠標事件的印象之下,但是我將如何處理多個觸摸事件?Swing中的多點觸控
我已經嘗試添加JPanel
與MouseMotionListener
並將值輸出到控制檯。但是,我只能獲得屏幕上第一次觸摸的值。
然後我嘗試將屏幕向下分割,兩側各有一個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--稍後你會感謝我;-P--不過,儘管非常認真,但Swing已經很老了,可能無法滿足現代觸摸屏設備的需求。 JavaFX(Java8中的Swing替代品)有很多內置的東西可以幫助解決觸摸屏設備的問題。您可以將JavaFX與java7一起使用,您只需將jfxrt.jar包含在您的類路徑中即可。 – SnakeDoc
我主要做Android-Dev,前一段時間學過Swing,所以這就是我試圖爲我的表面構建它的原因。謝謝,我會研究使用JavaFX。 –
如果您決定在java中編寫代碼,則它與swing語法非常相似... javafx的另一個選項是您可以使用FXML(xml的子集)編寫ui,並且非常快速地寫出複雜的UI,然後在Java代碼,你只需添加功能。查看SceneBuilder的UI,可以通過拖放來創建一個FXML文檔(其官方來自oracle)。如果你使用javafx,你也可以使用CSS爲你的程序加皮膚。有很多愛:) – SnakeDoc