Donner le focus à une fen^tre avec les APIs java, oui mais ..

amauryxiv Messages postés 83 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 3 août 2017 - 30 mars 2011 à 21:15
amauryxiv Messages postés 83 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 3 août 2017 - 1 avril 2011 à 20:40
Bonjour à tous.

Voilà tout l'après-midi que je cherche comment donner le focus à une fenêtre Java, mais en gagnant le focus non pas sur les autres fenêtres de la JVM, mais sur toutes les autres fenêtres actives de l'OS (dans mon cas, Windows 7). J'ai cherché sur la toile pendant des heures, rien ! nada !
On trouve plein de documentation sur le SOUS-système de gestion du focus des composants au sein d'une JVM, mais quand il s'agit de faire interagir la JVM avec l'OS uniquement pour de la gestion de focus, j'ai essayé un peu tout et n'importe quoi, rien n'y fait ...


Bref, ma question est simple, comment faire en sorte qu'une fenêtre Java (ici un JFrame) gagne le focus sur les autres fenêtres Windows ?
Si quelqu'un détient une solution simple, qu'il n'hésite pas.

Merci par avance.


Amaury
A voir également:

6 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 avril 2011 à 16:21
Salut,

Tu as testé l'usage des méthodes 'requestFocus'.




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
amauryxiv Messages postés 83 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 3 août 2017
1 avril 2011 à 17:13
Bonjour.

Oui bien sûr, j'ai esayé requestFocus, toFront et bien d'autres choses mais ces APIs ne gère que le sous-sytème de focus propre aux fenêtres de la JVM.

Amaury
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 avril 2011 à 19:00
Salut,

Tiens je viens de tester les requestFocus sous Windows 7 et ça passe.
Quand je redonne le focus à une fenêtre java qui est sous des fenêtres de l'OS depuis une autre fenêtre java, ça passe bien ô_O

J'ai testé avec ça :
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Focus implements ActionListener {
private JFrame	f1	= null;
private JFrame	f2	= null;
private JButton	b1	= null;
private JButton	b2	= null;

public Focus() {
f1 = getJFrame("Frame 1");
f2 = getJFrame("Frame 2");
b1 = getJButton(f1, "Focus Frame 2");
b2 = getJButton(f2, "Focus Frame 1");

f1.setVisible(true);
f2.setVisible(true);
}

private JFrame getJFrame(final String title) {
final JFrame f = new JFrame();
f.setTitle(title);
f.setDefaultCloseOperation(3);
f.setSize(300, 150);
f.setLocationRelativeTo(null);
f.setLayout(new FlowLayout());
return f;
}

private JButton getJButton(final JFrame owner, final String text) {
final JButton b = new JButton();
b.setText(text);
b.addActionListener(Focus.this);
owner.add(b);
return b;
}

@Override
public void actionPerformed(final ActionEvent e) {
final Object o = e.getSource();
if (o.equals(b1)) {
f2.requestFocus();
} else if (o.equals(b2)) {
f1.requestFocus();
}
}

public static void main(final String[] args) {
new Focus();
}
}



------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
amauryxiv Messages postés 83 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 3 août 2017
1 avril 2011 à 19:34
Si j'ai bien comprisc'est une feêtre java qui donne le focus à une autre fenêtre java. Donc on reste au sein du sous-système Java de la gestion du focus.

Amaury
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 avril 2011 à 19:48
Salut,


Si j'ai bien comprisc'est une feêtre java qui donne le focus à une autre fenêtre java.

Oui.


Donc on reste au sein du sous-système Java de la gestion du focus.

Je ne vois pas trop pourquoi tu dis qu'ici on reste au sein du sous-système Java.
Celui qui gère le focus inter-fenêtre (je ne parle pas des internalframe) c'est l'OS pas java.


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
amauryxiv Messages postés 83 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 3 août 2017
1 avril 2011 à 20:40
Je dis ça car au travers de la fenêtre java qui a le focus au départ, c'est la JVM qui a le focus. En bref elle l'a au départ donc à l'arrivée.

Je reformule donc ma qustion: comment faire (paramétrage ? programmation ?) pour octroyer le focus à une JVM lors de son lancement ?

Merci OoWORAoO pour ton aide.

Amaury
0
Rejoignez-nous