@Michael...:
Vielen Dank für dein Key-Binding-Beispiel - es hat mir bei der Implementierung von anwendungsweiten Hotkeys sehr geholfen!
Ich habe da nur noch ein Problem bei einem JTabbedPane und einer JList:
Beim JTabbedPane will ich die Nach-Links- und Nach-Rechts-Tastenschläge überschreiben. (mit dem Ziel, das die Tabs zwar auch immer noch gewechselt werden, aber wenn man am Ende angelengt ist, dass dann nicht wieder zum Anfang gesprungen wird)
In der JList möchte ich das Gleich erreichen: Navigation durch die Tabs (jedes Tab hat eine JList).
Ich habe dazu auch bereits
das hier ausprobiert. - Es funktioniert aber leider nicht!
=> Ist das gewünschte nur mit KeyListenern möglich?
Weiterhin zeigt dein Beispiel auch recht gut das Problem mit dem Auslesen der KeyEvents, während ein Fenster bewegt wird.
@irgendjemand:
das dierekte ansprechen bereits vorhandener LIBs *win : DLL , unix : SO , mac : weis ich erlich gesagt nicht* nennt sich JNA ...
das unterscheidet sich ETWAS von JNI
Ok, gut zu wissen!
JNI
du schreibst eine klasse in der es "native" methoden gibt
du compilest diese klasse
du führst "javah" aus um aus der compileten klasse ein C header-file zu erzeugen
du schreibst eine LIB die dieses header-file sowie die JNI-header und JNI-OS-header *es gibt verschiedene für win und unix* included und implementiert ...
dafür sind aber C kenntnisse notwendig
Hmm. Dies klingt recht umständlich...
Ich halte JNA rein von deiner Beschreibung her für einfacher. - Kann man das so sehen?
*das ganze geht auch mit C++ ... wobei es ja so ganz grob nur den unterschied gibt das C++ OOP ist ... und C nicht *so hat man mir das mal erklärt ... wie viel wahres dran is weis ich nich**
So ist es mir auch geläufig.

Aber sollte es nicht egal sein, in welcher Sprache die dll geschrieben wurde?
JNA
du schreibst eine klasse die mit hilfe spezieller helper klassen eine zur runtime geladene LIB dierekt verwenden kann
dafür ist die genaue kenntnis der LIB notwendig ... welche sich nur durch source aneignen lässt ... was also unter windows bei nicht-open-source libs quasi unmöglich ist
Die Windows APIs sind verhältnismäßig gut dokumentiert (wenn Mircosoft nicht wieder mal einen Fehler in der Doku eingebaut hat...). Wenn die dll eine Funktion exportiert, dann braucht man diese doch "nur" aufrufen und den Rückgabewert in Empfang zu nehmen. - Eine genaue Kenntnis, wie die Funktion intern arbeitet, ist eigentlich irrelevant. Kennst du ein gutes Tutorial für JNA?
das ganze selbst nachbauen ... hmm wird schwer ... aber du könntest deinem programm einen komplett eigenen look verpassen ...
Das ist leider ein No-Go für mich: ich akzeptiere nur das Native Look and Feel.
Ich habe schon ein Problem damit, dass die InternalFrames bei Swing nicht haargenau den MDI-Childs eines nativen Windows-Fensters entsprechen...
das diese globalen key-events angeht : soweit ich weis kann man jeder swing-component einen listener anhängen ... müsste aber auch dierekt auf das JFrame .. bzw dessen contentPane möglich sein ...
versucht hab ich sowas selbst noch nciht weil nicht gebraucht ... aber jeder component einen listener adden brauchst du nicht ... lediglich dem "höchstens" container *was ja dann das contentPane sein dürfte*
Gut, das hatte ich probiert - aber evtl. hatte ein Textfeld den Fokus.
Ich habe es für die Hotkeys ja nun mit KeyBinding gelöst. Aber warum gibt es überhaupt diese zwei unterschiedlichen Konzepte: KeyBinding und KeyListener?
[EDIT]liegt halt daran das nur das objekt events gefeuert werden was halt gerade den focus hat[/edit]
Das habe ich jetzt nicht ganz verstanden... Meinst du: Die Nachrichten werden an die Componente mit dem Fokus geleitet, wenn dieses diese Nachrichten selber nicht verarbeitet, dann reicht es die Nachrichten an den Parent weiter - ansonsten aber nicht?
ansonsten versteh ich aber so langsam das problem selbst : du willst auf key-events prüfen obwohl du außerhalb des java-event-tress bist *was ja schon auf die fenster-leiste zutrifft* ... und ob das noch mit SE mitteln möglich ist ... na ich weis nicht so recht ... wie gesagt : ohne JNI/JNA wird das sicher nichts ... und eine JNI möglichkeit hab ich dir schon gelinkt
Ja, so ist es: ich möchte JDialog erweitern und dieser Klasse dabei ein wenig Mac-Funktionalität beibringen: in diesem
Video ist bei Minute 4:24 ein Dialog zu sehen, wie es ihn unter OS X gibt. Er hat keine Titelleiste und wird zusammen mit dem Elternfenster bewegt.
Ich glaube sogar (weiß es aber nicht mit Sicherheit, da ich keinen Mac besitze), dass dies auch funktioniert, wenn der Dialog modal ist - in diesem Falle sind nur die Steuerelemente des Parents blockiert, das Fenster lässt sich aber immer noch klicken.
Bei Windows ist das sehr störend: wenn man einen modalen Dialog hat, und die Anwendung nur mal kurz zur Seite schieben will, muss man den Dialog erst abbrechen, das Fenster bewegen und anschließend die Dialog wieder anzeigen. Bei modeless Dialogen muss man beim Verschieben des Elternfensters (z. B. auf einen zweiten Monitor) alle Kind-Fenster einzeln nachziehen.
Die Idee war nun, beim Bewegen des Hauptfenster die modeless Kinder automatisch mitzubewegen. Wenn dies nicht gewünscht ist, dann kann der Nutzer einfach Strg gedrückt halten.
Wenn der Nutzer ein modales Kind verschiebt und dabei Strg gedrückt hält (hier also negative Logik), dann wird auch das Elternfenster mit bewegt.
Dies kann durchaus (je nach Anwendung) sehr nutzerfreudlich sein.
Mal sehen, ob ich das mit dem JNA hinbekomme... Könnte ich mich bei Bedarf nochmal melden?