Zuletzt aktives Fenster, vor dem aktuell aktiven

  • Themenstarter Gelöschtes Mitglied 71387
  • Beginndatum
G

Gelöschtes Mitglied 71387

Gast
Hallo Foren-Teilnehmer,

habe mal wieder ein Problemchen, zum dem ich eine Idee suche. Möglicherweise kann jemand weiterhelfen:
Ich möchte gerne das zuletzt aktive Fenster erhalten. Gibt es dazu eine einfache Methode?

Im Netz habe ich zwei Klassen gefunden. Eine ist ein FocusListener und kann über focusGained(FocusEvent e) und focusLost(FocusEvent e) die Referenz zur zuletzt "angeklickten" Komponente ablegen.

Das Problem liegt nun beim Initialisieren. Zu Beginn ist die Komponente leider null und reagiert erst wenn man sie anklickt und dann ein zweites Fenster anklickt.
Gibt es eine Möglichkeit eine JComponent mit einem Wert, der nicht null ist, zu initialisieren? e.getComponent oder e.getOppositeComponent ist etwas wie
xyz[,0,0,700x472,layout=java.awt.FlowLayout,alignmentX=0.0,ali ... Das kann ich nicht zuweisen. Danke.
 

Times

Bekanntes Mitglied
Was hast du denn genau vor?

Wenn es darum geht das aktive/fokussierte Fenster zu erhalten um zum Beispiel eine Meldungsbox auf dem korrekten Bildschirm, inkl. Fensterposition, auszugeben, kannst du folgendes verwenden:

Java:
DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow()
Java:
DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().getFocussedWindow()

Für die aktive Komponente:
Java:
DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()

Um an das vorherige aktive Fenster zu kommen wüssste ich nur die Möglichkeit das du deine eigene Überwachung implementierst und immer wieder das aktive Fenster abfragst und für deinen Fall die letzten zwei zu speichern.

Falls das alles nicht das ist was du wolltest würde ich dich bitten die Frage noch ein mal detaillierter zu stellen,
bzw. das zu schreiben was du im Ziel vorhast :)
 
G

Gelöschtes Mitglied 71387

Gast
Danke für die Antwort.
Ich habe vor das "zuletzt aktive Fenster" zu speichern um dort irgendwas zu machen (nur dort, während das zweite Fenster, das auch von den Steuerelementen angesprchen wird nichts tut), z. B. wenn mehrere Fenster offen sind. Hatte die Frage falsch gestellt. Konnte mich aber nicht im Forum einloggen.
Das Problem ist, dass ich immer über die Erzeugung von new MeinErstesFenster(), new meinZweitesFenster(), etc. das zuletzt aktive Fenster erhalte und auch bedienen kann, aber leider immer wenn ich ein offenes Fenster anklicke jeweils eine neue Instanz erstelle. Da ich gerade aufräume, stört mich das, obwohl es funktioniert.
Also die Frage ist eigentlich wie ich im "zuletzt aktiven Fenster " etwas ändern kann, ohne Inhalte eines weiteren Fensters zu ändern und ohne dabei eine neue Instanz zu machen.

Diese Klasse legt die Referenz zur zuletzt "angeklickten" Komponente ab (focusLost):
ziel.setLastFocusedComponent(e.getComponent()); //in MeineKlasse(), MeineKlasse1,MeineKlasse2

Java:
class PanelFocusListener implements FocusListener {
    private MeineKlasse ziel;
    boolean havefocus = false;
    static Component st= null;
    private Component lastFocusedComponent;
  
    public PanelFocusListener() {
      
    }
    public PanelFocusListener(MeineKlasse zielMeineKlasse1) {
        this.ziel =zielMeineKlasse1;
    }
    //private final ArrayList<MeineKlasse> folisteners = new ArrayList<>();
 
  
    public void focusGained(FocusEvent fe) {     
        setHavefocus(true);
        System.out.println(" focusGained -----------"+isHavefocus()+ " " + fe.getComponent()+ "-------------" );
        fe.getComponent().setBackground(Color.yellow);
      
        if (!fe.getClass().getName().equals("javax.swing.JButton")
                || !fe.getClass().getName().equals("javax.swing.JTextField")|| !fe.getClass().getName().equals("awechsel.ActionPanel")
                || !fe.getClass().getName().equals("awechsel.MeineKlasse1")|| !fe.getClass().getName().equals("awechsel.MeineKlasse2"))
        {setSt(null);}
      
    }

    @Override
    public void focusLost(FocusEvent e) {
        // TODO Auto-generated method stub
        setSt(e.getComponent());//???
        setHavefocus(false);
        System.out.println("focusLost----------- "+isHavefocus()+ " " + e.getComponent()+ "-------------" );
        e.getComponent().setBackground(Color.lightGray);
        //e.getComponent().repaint();
      
        ziel.setLastFocusedComponent(e.getComponent());
        System.out.println("getLastFocusedComponent(): "+ ziel.getLastFocusedComponent());
      
        if (e.getComponent().getClass().getName().equals("awechsel.MeineKlasse1") ||
                e.getComponent().getClass().getName().equals("awechsel.MeineKlasse2")) {
            MeineKlasse2 t2= new MeineKlasse2(ziel.getLastFocusedComponent());
            MeineKlasse1 t1 = new MeineKlasse1(ziel.getLastFocusedComponent());
        }
    }
  
    public boolean isHavefocus() {
        return havefocus;
    }

    public void setHavefocus(boolean havefocus) {
        this.havefocus = havefocus;
    }


    public Component getSt() {
        return st;
    }

    public void setSt(Component st) {
        this.st = st;
    }
}   
//In MeineKlasse1 und MeineKlasse2 werden Panels unterschieden

[CODE]
public MeineKlasse1(){
      public void setLastFocusedComponent(Component newLastFocusedComponent) {
            this.lastFocusedComponent = newLastFocusedComponent;
        }
        public Component getLastFocusedComponent() {
            return lastFocusedComponent;
        }
     public void onePanelOnly(Component getlfcst) {
     //TEST OKT 21
        System.out.println("BIN IN onePanelonly MeineKlasse1");
 this.stcomp = getlfcst;
     //System.out.println("getlfcst: " + getlfcst + pfl.havefocus);
            if (getlfcst != null && getlfcst.getClass().getName().equals("awechsel.MeineKlasse1")){
          
                   System.out.println("in onePanelOnly MeineKlasse1 - true: " + stcomp.getClass().getName() + " --(Übereinstimmung MeineKlasse1)--");
                 } else if (getlfcst != null && !getlfcst.getClass().getName().equals("awechsel.MeineKlasse1")) {
            
                     System.out.println("in onePanelOnly MeineKlasse1 - false: " + stcomp.getClass().getName()+ " --(Keine Übereinstimmung)--");
                 }
}
[/CODE]



Wie kann man das ohne neue Instanz machen? Habe schon einige Zeit versucht das zu lösen, es geht aber nicht. Irgendwie wird es dann nicht sofort upgedated. Danke schonmal.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Swing JTable merkt sich die zuletzt selektierte Zelle AWT, Swing, JavaFX & SWT 3
kaoZ Swing Aktives Zeichen für Spieleprogrammierung ? AWT, Swing, JavaFX & SWT 8
T JTextPane, Mausklick, aktives Wort AWT, Swing, JavaFX & SWT 2
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
S Swing Alles beenden bei Fenster mit Scroll-Balken AWT, Swing, JavaFX & SWT 6
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L Hintergrundbild im Fenster darstellen AWT, Swing, JavaFX & SWT 9
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
P JavaFX Fenster lädt nicht mehr AWT, Swing, JavaFX & SWT 4
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
K Fenster welches den Sieger anzeigt AWT, Swing, JavaFX & SWT 5
O JavaFX Fenster scließen AWT, Swing, JavaFX & SWT 4
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
L Input aus Sub-Fenster Startfenster übergeben AWT, Swing, JavaFX & SWT 5
B AWT Fenster schließt nicht AWT, Swing, JavaFX & SWT 2
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
T Fenster schließen AWT, Swing, JavaFX & SWT 4
K JavaFX ObservableList + Fenster AWT, Swing, JavaFX & SWT 6
windl Transparentes / halbtransparentes Fenster AWT, Swing, JavaFX & SWT 1
K Fenster mittig im Vollbildschirm - ok, aber ... AWT, Swing, JavaFX & SWT 2
N Swing Sorry nicht mal ein Fenster öffnen... AWT, Swing, JavaFX & SWT 19
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
D JavaFX (WebStart) Graues Fenster beim Start AWT, Swing, JavaFX & SWT 4
J Button vergrößert sich bei Fenster resize AWT, Swing, JavaFX & SWT 22
L Zweites Fenster mit Thread AWT, Swing, JavaFX & SWT 0
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
K Java Button öffnet neues Fenster AWT, Swing, JavaFX & SWT 5
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
X Swing 2 Fenster (1 im Vordergrund) AWT, Swing, JavaFX & SWT 6
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
T JavaFX ControlsFX-Notification öffnet nicht wenn kein JavaFX-Fenster offen. AWT, Swing, JavaFX & SWT 1
E JavaFX JavaFX Fenster nicht schließen AWT, Swing, JavaFX & SWT 4
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
thet1983 offne Fenster gemeinsam schließen AWT, Swing, JavaFX & SWT 8
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
Z JSlider im Modalen-Fenster AWT, Swing, JavaFX & SWT 0
Tort-E JavaFX Fenster nachladen AWT, Swing, JavaFX & SWT 1
V Fenster in einem Fenster anordnen AWT, Swing, JavaFX & SWT 7
I Zwei Fenster nebeneinander anzeigen AWT, Swing, JavaFX & SWT 2
U Fenster beim Vergörßern immer quadratsich AWT, Swing, JavaFX & SWT 7
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
E Alles in einem Fenster AWT, Swing, JavaFX & SWT 5
A Fenster erstellen AWT, Swing, JavaFX & SWT 2
I Swing Beim Fenster das kleine Symbol(ICS) ändern AWT, Swing, JavaFX & SWT 3
K JavaFX Vorschau Bereich/Fenster einer bestehenden Group AWT, Swing, JavaFX & SWT 3
G Scrollbar für das Fenster einfügen AWT, Swing, JavaFX & SWT 3
X Fenster von außen ansprechen AWT, Swing, JavaFX & SWT 7
brunothg Swing JTable -> AUTO_RESIZE_OFF aber das Fenster ausfüllen AWT, Swing, JavaFX & SWT 0
G jLabel aus anderem Fenster ändern AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben