Ich habe eine Legacy-Swing-Anwendung, der ich Berührungsgesten hinzufügen muss, insbesondere zum Zoomen zoomen und berühren und ziehen.
Ich habe den SwingNode von JDK 8 ausprobiert und kann die Swing-Anwendung dort ausführen, aber die Display-Leistung wurde um mehr als 50% reduziert, was nicht funktioniert. SwingTextureRenderer in MT4J hat das gleiche Problem und das ist, ohne Touch-Ereignisse als Mausereignisse erneut zu versenden.
Ich dachte über einen Glasscheibenansatz nach, bei dem eine JavaFX-Schicht oben verwendet wird und die Berührungsereignisse erfasst werden und versucht wird, sie als Mausereignisse an die Swing-App darunter zu senden.
Hat jemand einen alternativen Ansatz? Die Zielplattform ist Windows 8.
Bounty kommt, sobald Stackoverflow es öffnet. Ich brauche das ziemlich schnell.
BEARBEITEN:
Hier ist, was ich mit SwingNode versucht habe (das Redispatch der Maus hat nicht funktioniert). Der SwingNode-Kram könnte eine Ablenkung von der besten Lösung sein. Ignorieren Sie dies, wenn Sie eine bessere Idee haben, den Swing zu verstehen:
%Vor%hmm ... das ist hart, aber es gibt eine Chance.
Ich würde mehrere MouseListener
-Klassen erstellen (relativ zur Anzahl der Mausereignisse, die Sie aufnehmen möchten) und dann eine Art System erstellen, um bestimmte Anpassungen zu erkennen, z. (Zoom)
1. Listener:
%Vor%Zweiter Listener
%Vor%Haupt-Handler
%Vor%Und dann tun Sie das einfach, um es dem Fenster hinzuzufügen:
%Vor%Ich hoffe, Sie finden einen Weg.
Für den Pinch-Zoom:
Probieren Sie den GestureMagnificationListener von guigarage.com. Es bietet eine Methode:
%Vor%Tags und Links java swing javafx-8 multi-touch