Question

J'écris un petit jeu, avec un JFrame contenant le jeu principal et un autre JFrame affichant le score. le problème est que, quand j'ai fini de les construire, le score JFrame finit toujours par être concentré! J'ai essayé d'appeler scoreDisplay.toFront (), scoreDisplay.requestFocus () et même:

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

Y at-il un moyen de faire ce travail? Merci d'avance, John Murano

Était-ce utile?

La solution

Avez-vous envisagé de placer le score dans le même cadre que le cadre du jeu?

Une autre option possible (rapide et sale) consiste à les créer dans l'ordre inverse ou au moins (si le score dépend du jeu) de les afficher dans l'ordre inverse.

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

À mon avis, ils sont actuellement:

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

Autres conseils

Basculer alwaysOnTop

Voir ici:

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

  

Lisez à propos de toFront dans l'API    http://java.sun.com /j2se/1.5.0/docs/api/java/awt/Window.html#toFront

     

Certaines plates-formes n'autorisent peut-être pas cette machine virtuelle   placer ses fenêtres au-dessus des fenêtres de   applications natives, ou Windows de   autres ordinateurs virtuels.

     

Sous Windows, par exemple toFront   l’icône de la barre des tâches   scintiller, mais la fenêtre reste dans le   retour.

     

La seule pensée qui va forcer le   la fenêtre à l'avant est setAlwaysOnTop.

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

Appelez la méthode requestFocus () .

Cela n’est pas garanti, car il existe de nombreuses raisons pour lesquelles un système d’exploitation ne permet pas à une image de se focaliser. Il pourrait y avoir une autre image avec une priorité plus élevée dans une application différente. Il existe également des bureaux Linux qui (si je me souviens bien) ne permettent pas aux cadres de demander le focus.

Pour vous donner une meilleure chance de succès, je vous recommande également d'appeler la méthode toFront () avant de demander le focus.

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

N'oubliez pas que rien de tout cela n'est garanti car la gestion des images, en particulier avec la mise au point et la superposition, dépend fortement du système d'exploitation. Réglez donc le cadre sur visible, déplacez-le vers l'avant et demandez la mise au point. Une fois que vous avez abandonné l’EDT, le système d’exploitation donnera probablement le focus au cadre. À tout le moins, la fenêtre devrait être au-dessus.

Voici comment je le ferais:

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

et si vous souhaitez également avoir plus de contrôle, vous devez utiliser requestFocuse.

BTW, voici un exemple: http: //coding.derkeiler. com / Archives / Java / comp.lang.java.gui / 2006-06 / msg00152.html

Ajoutez simplement la ligne de code suivante au-dessus du code JOptionPaneMessageDialog ... this.setAlwaysOnTop (false);

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

Essayez ce qui précède ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top