# Touch GUI umsetzung



## Tyll (23. Aug 2012)

Hallo Liebe Community,

ich habe ein Problem bei dem ich einfach nicht weiter komme.

Wir haben bei uns in der Firma eine GUI(Lernsoftware für ein Schiff) die demnächst komplett neu umgesetzt Aufgesetzt werden soll, wegen teils Groben fehlern in der Programmierung. Dabei soll aber das aussehen Benutzeroberfläche erhaltenbleiben. Ich soll jetzt Versuchen diese GUI touchfähig zu machen.

Ich habe auch schon mehrere möglichkeiten ausprobiert das umzusetzen die alle nicht wirklich funktioniert haben. Jetzt habe ich mir eine Klasse erstellt die ich von JPanel ableite,zu der dann alle Objekte hinzugefügt werden. Jedes Objekt erhält einen Bereich das bei einem mouseclickevent überprüft wird und dem entsprechenden Objekt zuweisst. Nun möchte ich dieses Event an mein objekt (JSlider,JButton,JCheckBox) weiterleiten,
sodas diese so ausgelöst wird, wie als würde man normal auf dieses Objekt klicken. Genau dieses Weiterleiten und Aufrufen der entsprechenden Methode bekomme ich nicht auf die Reihe. Langsam habe ich auch das Gefühl das, das garnicht geht. 
Bitte helft mir 

MFG Eric


----------



## Michael... (23. Aug 2012)

An einem Button könnte man einfach doClick() aufrufen. Bei anderen Komponenten müsstet zum einen die Werte verändern setValue, setSelected... zum anderen deren Listener informieren oder direkt die Methoden aufrufen, welche von den Listenern aufgerufen würden.
Ein "weiterleiten" an die Komponenten geht nicht, da diese so konzipiert sind, dass sie Events an Ihre Listener versenden und nicht empfangen.


----------



## Marco13 (23. Aug 2012)

"Weiterleiten" geht schon, ein Beispiel ist das erste von How to Use Root Panes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) - aber ich bin nicht sicher, ob das gemeint ist. Wie willst du denn die Touch-Unterstützung überhaupt machen? Irgendwelche Bordmitteln von Windows, oder MT4J, oder was eigenes...?


----------



## Tyll (23. Aug 2012)

> An einem Button könnte man einfach doClick() aufrufen.



Theoretisch ist das auch eine Lösung aber ich habe alle Objekte in einem Component Array gespeichert und ausdem herraus kann ich z.B doClick nicht aufrufen oder irre ich mich da ?



> "Weiterleiten" geht schon, ein Beispiel ist das erste von How to Use Root Panes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) - aber ich bin nicht sicher, ob das gemeint ist. Wie willst du denn die Touch-Unterstützung überhaupt machen? Irgendwelche Bordmitteln von Windows, oder MT4J, oder was eigenes...?



Ob dein Vorschlag die lösung ist weiß ich noch nicht bin mich noch am durchlesen (leider ist mein english nicht so super). Und die Touch-Unterstützung bin ich ja gerade am selber umsetzten da ich leider nichts gefunden was mir diese Arbeit abnehmen kann.


----------



## bERt0r (23. Aug 2012)

Ojeh. Du kommst an deine Komponenten nur über ein Component array ran? Sag bitte nicht das ganze läuft auch noch als null layout.
Ich kenn mich nicht aus mit touch screen unterstützung, aber sollte die nicht genauso eine Maus simulieren. Also auf Betriebssystemebene sodass du im java da gar nichts mitbekommst.
Falls du den Touchscreen input direkt per Schnittstelle bekommst wird der doch auch irgenwie nach "Druck auf Punkt x=100, y=300" aussehen. Dann könntest du einfach per Robot den Mouseklick erzeugen.
Irgendwelche Bereiche für Komponenten selber zu definieren ist denk ich mal total überflüssig. Das machen die Swing Komponenten doch bereits - size, width, height, x ,y ... alles Member von Component.


----------



## Tyll (24. Aug 2012)

> Ojeh. Du kommst an deine Komponenten nur über ein Component array ran? Sag bitte nicht das ganze läuft auch noch als null layout.


Nein ich komme an die Componenten auch über das Panel ran. Aber ich benötige die Liste um den "unsichtbaren" Bereich dem Component zu zuordnen. Und ja ich Arbeite mit einem null Layout wo siehst du da das Problem  ?


> Dann könntest du einfach per Robot den Mouseklick erzeugen.


Das ist eine Gute Idee werde ich mal ausprobieren 


Nein


----------



## Marco13 (24. Aug 2012)

Irgendwie kann ich dem nicht ganz folgen. Ist es nicht so, dass du NUR eine Fläche brauchst, auf der Touch-Events generiert werden? (Die können dann ja "irgendwie" in MouseEvents übersetzt und in die Swung EventQueue geworfen werden, das ist ja unabhängig davon...) !?


----------

