Hintergrundinformation:Swing: Wie kann ich JInternalFrame gleichwertig mit anderen Komponenten in einem Container behandeln?
ich einen visuellen Diagramm-Editor bin die Umsetzung, die
besteht aus- verschiedenen komplexen Elementen (Wieder ansehnlicher, mit Titelleiste, Unterelemente) und
- verschiedenen einfacher Elemente (nicht veränderbar, keine Titelleiste, keine Unterelemente).
Alle Elemente sind ziehbar.
Ich verwende JInternalFrame (für komplexe Elemente) zusammen mit JPanel (für einfache Elemente), um Elemente einer schematischen Darstellung darzustellen. Es gibt einen Container (entweder ein JDesktopPane oder ein JLayeredPane), die alle diese Elemente enthalten.
Ich habe mehrere Probleme mit diesem Konzept:
Fall 1 - Der Behälter ein JDesktopPane ist:
- JInternalFrames sind immer über andere Elemente.
- Klicken auf andere Elemente nicht "deaktivieren" vorher aktiv JInternalFrame
Fall 2 - Der Behälter ein JLayeredPane ist:
- Nachdem einige Elemente in einem JInternalFrame klicken, es bleibt "für immer aktiviert".
Fall 3 - JInternalFrame für alles verwendet, aber ohne Dekoration für einfache Elemente:
- Meine benutzerdefinierten Rahmen (die benötigt wird, wenn ich JInternalFrame Titelleiste manuell entfernen) ist jedes Mal ersetzt durch den aktuellen LAF-Rahmen, nach Aktivieren/Deaktivieren des JInternalFrame.
Ich bekomme nicht die ganzen Konzepte hinter Aktivierung von JInternalFrames sowieso. Wenn ich ein JInternalFrame nicht an allen aktivierbare machen könnte, könnte ich wählen Fall 2 jeder wäre glücklich.
Bitte geben Sie mir, was eine einfache und unkomplizierte Lösung gegeben Probleme wäre.
HINWEIS: Auswahl der Komponenten und Aktivierung von JInternalFrame scheinen verschiedene Dinge zu sein.
Ja, aber es hilft nicht. Auswahl hat nicht mit der Aktivierung von JInternalFrame zu tun. –
Sie sehen, selbst im Javadoc ist es verwirrend. Sie sprechen über die Auswahl, aber die Eigenschaft heißt "aktiviert". Hinweis: Es gibt auch eine Eigenschaft "selected" (was für mein Problem nicht zutrifft). Hmmm, ich bin verwirrt ... –
Ich verstehe es nicht. Jetzt habe ich InternalFrameListener und FocusListener zu allen JIFs hinzugefügt, aber keine dieser Listener empfängt irgendwelche Ereignisse! –