Wie werde ich aktiv (mit Fokus) Frame (JInternalFrame), die in JDesktopPane ist? Ich brauche es für meinen MDI-Notizblock (nicht dass irgendjemand das verwenden würde, nur ein Trainingsprojekt). Wenn ich auf api schaue, sehe ich nur Funktionen, um alle JInternalFrames zu erhalten, nicht aktiv.
Verwenden Sie die Methode JDekstopPane.getSelectedFrame () ( Von doc: momentan aktiver JInternalFrame in diesem JDesktopPane, oder null, wenn momentan kein JInternalFrame aktiv ist. ) oder JDesktopPane.getAllFrames()
, um eine Liste aller aktuell im Desktop angezeigten JInternalFrames
zu erhalten und isSelected()
-Methode zu überprüfen.
Machen Sie eine List<JInternalFrame>
und überprüfen Sie isSelected()
, während Sie es iterieren.
Nachtrag: Siehe auch dieses Beispiel , das Action
zur Auswahl verwendet ein interner Rahmen aus einem Menü.
Haben Sie sich das Java-Lernprogramm mit dem Titel Interne Frames verwenden angesehen? In Ihrem Code benötigen Sie eine InternalFrameListener
( API ) ( Tutorial ) und hören Sie, um Ereignisse zu aktivieren / deaktivieren. Aktiviert bedeutet, dass der interne Rahmen nach oben gebracht wurde. Deaktiviert bedeutet, dass es nicht mehr an der Spitze ist. Da JDesktopPane
erweitert JLayeredPane
ist, können Sie auch die z-Reihenfolge der hinzugefügten Komponenten festlegen.
Wiederholen Sie nicht alle Fenster - verwenden Sie Ereignisse.
Wenn Sie aus irgendeinem Grund Ihre Benutzeroberfläche lieber abfragen als eine ereignisgesteuerte Methode verwenden möchten, können Sie getSelectedFrame
aufrufen, was die aktive JInternalFrame
zurückgibt. Ich bin mir nicht sicher, warum niemand es erwähnt hat.
Tags und Links java swing mdi jinternalframe jdesktoppane