2014-03-03 3 views
5

Ich hatte den Eindruck, dass ein Touchscreen Mausereignisse emulierte, aber wie würde ich mehrere Berührungsereignisse behandeln?Multi-Touch in Swing

Ich habe versucht, einen JPanel mit einem MouseMotionListener hinzufügen und die Werte an die Konsole ausgeben. Ich bekomme jedoch nur Werte für die erste Berührung auf dem Bildschirm.

I dann versucht, den Bildschirm in der Mitte durch Aufspalten mit einem JPanel auf jeder Seite, und eine separate MouseMotionListener auf jeder Seite, die jeweils eine Ausgabe an die Konsole.

In dieser Konfiguration sehe ich nur die Werte für den ersten Finger auf dem Bildschirm. Hier

ist das, was ich bisher:

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

Und mein Mouse, L und R sind genau das gleiche.

Ich habe Bibliotheken gefunden, die Multitouch unterstützen, aber ich möchte dies tun, ohne Bibliotheken von Drittanbietern zu verwenden. Wie kann ich dabei nur mit nativen Maushörern arbeiten?

+2

JavaFX - Sie werden mir später danken ;-P - nicht, aber im Ernst, Swing ist sehr alt und kann nicht tun, was Sie für moderne Touch-Screen-Geräte wollen. JavaFX (der Swing-Ersatz in Java8) hat viele eingebaute Dinge, die helfen, Touchscreen-Geräte zu adressieren. Sie können JavaFX mit java7 verwenden, Sie müssen lediglich die Bibliothek jfxrt.jar in Ihren Klassenpfad einfügen. – SnakeDoc

+1

Ich mache hauptsächlich Android-Dev und habe Swing vor einiger Zeit gelernt, also habe ich versucht, das für meine Oberfläche zu bauen. Danke, ich werde mich mit JavaFX beschäftigen. –

+1

es ist sehr ähnlich zu swing syntax-weise, wenn Sie sich entscheiden, es in Java zu codieren ... eine andere Option mit javafx ist, Sie können Sie mit FXML, eine Teilmenge von XML schreiben und ist extrem schnell zu schreiben eine komplexe Benutzeroberfläche, dann in Java-Code fügen Sie einfach Funktionalität hinzu. Sehen Sie sich SceneBuilder für eine Benutzeroberfläche an, mit der Sie per Drag-and-Drop ein FXML-Dokument erstellen können (das offizielle von Oracle). Sie können Ihr Programm auch mit CSS formatieren, wenn Sie mit javafx arbeiten. es gibt viel zu lieben :) – SnakeDoc

Antwort

2

Zuerst möchte ich sagen, dass ich JavaFX wirklich für solch eine Anwendung empfehlen würde. Sie können auch integrate your JavaFX project in vorhandenen Swing-Anwendungen mit JFXPanel verwenden.

Allerdings habe ich über MT4j gehört, die ein Framework für Multitouch in Java-Anwendung ist, die auch Swing unterstützt. Ich habe nicht damit gearbeitet. Also kann ich dir nicht sagen, wie gut es funktioniert.

+0

Ein Beispielcode: http://mt4j.googlecode.com/svn/trunk/examples/basic/javaGUI/StartSwingExample.java – Lars