JDesktopPane - wie man einen aktiven Frame bekommt

8

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.

    
Dariusz G. Jagielski 17.12.2011, 04:33
quelle

3 Antworten

11

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.

    
adatapost 17.12.2011, 04:40
quelle
2

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ü.

    
trashgod 17.12.2011 04:38
quelle
2

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.

    
Paul 17.12.2011 04:48
quelle