Frage

Ich schreibe ein kleines Spiel, mit einem JFrame, das das Hauptspiel hält, und ein anderes JFrame, die die Partitur zeigt. das Problem ist, wenn ich sie fertig bin Konstruktion, die Partitur JFrame immer endet konzentriert! Ich habe versucht, scoreDisplay.toFront () aufrufen, scoreDisplay.requestFocus () und sogar:

display.setState(JFrame.ICONIZED);
display.setState(JFrame.NORMAL);

Gibt es eine Möglichkeit, diese Arbeit zu machen? Danke im Voraus, john murano

War es hilfreich?

Lösung

Haben Sie die Partitur im selben Rahmen wie das Spiel Rahmen betrachten Einstellung?

Weitere mögliche (quick and dirty) Option ist es, sich in umgekehrter Reihenfolge zu erstellen, oder zumindest (falls Punktzahl auf Spiel hängt), um sie in umgekehrter Reihenfolge angezeigt werden.

score.setVisible( true );
game.setVisible( true );

Meine Vermutung ist, dass zur Zeit sind sie:

game.setVisible( true );
score.setVisible( true );

Andere Tipps

Toggle alwaysOnTop

Sehen Sie hier:

http://forums.sun.com/thread.jspa?threadID=5124278

  

Lesen Sie mehr über toFront in der API    http://java.sun.com /j2se/1.5.0/docs/api/java/awt/Window.html#toFront

     

Einige Plattformen können diese VM nicht zulassen   zu platzieren sein Windows über Fenster   native Anwendungen oder Windows von   andere VMs.

     

Unter Windows OS zum Beispiel toFront   bewirkt, dass das Symbol in der Taskleiste auf   flackern, aber das Fenster bleibt in der   zurück.

     

Die einzige denken, dass die Kraft wird   Fenster nach vorne ist setAlwaysOnTop.

frame.setAlwaysOnTop(true); 
frame.setAlwaysOnTop(false);

Rufen Sie die requestFocus() Methode.

Dies ist nicht garantiert, denn es gibt viele Gründe, warum ein Betriebssystem, einem Rahmen nicht erlauben würde Fokus zu haben. Es könnte ein weiterer Rahmen mit höherer Priorität in einer anderen Anwendung sein. Es gibt auch einige Linux-Desktops, die (wenn ich mich richtig erinnere) Rahmen nicht zulassen Fokus beantragen.

Um Ihnen eine bessere Chance auf Erfolg, empfehle ich auch die toFront() Methode aufrufen, bevor Fokus anfordert.

frame.setVisible(true);
frame.toFront();
frame.requestFocus();

Beachten Sie bitte, nichts davon ist garantiert, da Frame-Handling, vor allem mit Fokus und Schichtung, ist sehr betriebssystemabhängig. So stellen Sie den Rahmen sichtbar, nach vorne bewegen, und fordern Sie den Fokus. Sobald Sie den EDT aufgeben, wird das Betriebssystem wahrscheinlich den Rahmen geben Sie den Fokus. Zumindest sollte das Fenster oben sein.

Die Art und Weise, dass ich tun würde, ist:

 frame.toFront();
 frame.setState(Frame.NORMAL); 

Und wenn Sie wollen auch mehr Kontrolle über sie haben, sollten Sie requestFocuse verwenden.

BTW, hier ein Beispiel: http: //coding.derkeiler. com / Archiv / Java / comp.lang.java.gui / 2006-06 / msg00152.html

Fügen Sie einfach die folgende Codezeile über dem JOptionPaneMessageDialog Code ... this.setAlwaysOnTop (false);

frame.setExtendedState( JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);

Versuchen Sie, die oben ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top