J'aurrais besoin de connaître la liste de toutes les instances de JFrame
et JDialog créer par mon application.
Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les instances que je
créer, mais cette solution n'est pas satifaisante pour plusieurs raisons
- c'est vraiment moche dans le code
- gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un
OptionPane)
- Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui
ouvre une fenêtre sans vous donner sa référence.
- gros risque d'oublie (je sais mais c'est vraiment un gros risque)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
tomcat
Black Myst wrote:
Salut,
J'aurrais besoin de connaître la liste de toutes les instances de JFrame et JDialog créer par mon application. Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les instances que je créer, mais cette solution n'est pas satifaisante pour plusieurs raisons - c'est vraiment moche dans le code - gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un OptionPane) - Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui ouvre une fenêtre sans vous donner sa référence. - gros risque d'oublie (je sais mais c'est vraiment un gros risque)
Alors, possible ou pas ?
Je pense qu'un truc de ce genre devrait faire l'affaire :
//Récupération de tous les composants de la Frame principale Components[] liste = maFrame.getComponents(); //itération sur ces composants for (int i = 0; i < liste.length; i++){ if (liste[i] instanceof JFrame){ //traitement dans le cas où c'est une JFrame } else if (liste[i] instanceof JDialog){ //traitement dans le cas où c'est un JDialog } }
Merci d'avance. de rien
Black Myst
Black Myst wrote:
Salut,
J'aurrais besoin de connaître la liste de toutes les instances de JFrame
et JDialog créer par mon application.
Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les instances que je
créer, mais cette solution n'est pas satifaisante pour plusieurs raisons
- c'est vraiment moche dans le code
- gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un
OptionPane)
- Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui
ouvre une fenêtre sans vous donner sa référence.
- gros risque d'oublie (je sais mais c'est vraiment un gros risque)
Alors, possible ou pas ?
Je pense qu'un truc de ce genre devrait faire l'affaire :
//Récupération de tous les composants de la Frame principale
Components[] liste = maFrame.getComponents();
//itération sur ces composants
for (int i = 0; i < liste.length; i++){
if (liste[i] instanceof JFrame){
//traitement dans le cas où c'est une JFrame
}
else if (liste[i] instanceof JDialog){
//traitement dans le cas où c'est un JDialog
}
}
J'aurrais besoin de connaître la liste de toutes les instances de JFrame et JDialog créer par mon application. Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les instances que je créer, mais cette solution n'est pas satifaisante pour plusieurs raisons - c'est vraiment moche dans le code - gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un OptionPane) - Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui ouvre une fenêtre sans vous donner sa référence. - gros risque d'oublie (je sais mais c'est vraiment un gros risque)
Alors, possible ou pas ?
Je pense qu'un truc de ce genre devrait faire l'affaire :
//Récupération de tous les composants de la Frame principale Components[] liste = maFrame.getComponents(); //itération sur ces composants for (int i = 0; i < liste.length; i++){ if (liste[i] instanceof JFrame){ //traitement dans le cas où c'est une JFrame } else if (liste[i] instanceof JDialog){ //traitement dans le cas où c'est un JDialog } }
Merci d'avance. de rien
Black Myst
Black Myst
Je pense qu'un truc de ce genre devrait faire l'affaire :
//Récupération de tous les composants de la Frame principale Components[] liste = maFrame.getComponents(); //itération sur ces composants for (int i = 0; i < liste.length; i++){ if (liste[i] instanceof JFrame){ //traitement dans le cas où c'est une JFrame } else if (liste[i] instanceof JDialog){ //traitement dans le cas où c'est un JDialog } }
interressant, mais je ne crois pas que tu ai compris mon problème : je
ne cherche pas les sous-fenêtres de ma fenêtre, mais toutes les fenêtres qui ont été ouvertes.
Mon prog est en fait composé de module très différent qui se comporte un peu comme des programme autonome dans une même JVM, impossible dans ses condition de définir de Fenêtre principal, ni de lien entre ces fenêtres.
Ton algo permets de récupérer les JDialog qui sont associé à une JFrame parente, pas de trouver toutes les JFrames ouvert.
Une autre idée ?
Black Myst
Je pense qu'un truc de ce genre devrait faire l'affaire :
//Récupération de tous les composants de la Frame principale
Components[] liste = maFrame.getComponents();
//itération sur ces composants
for (int i = 0; i < liste.length; i++){
if (liste[i] instanceof JFrame){
//traitement dans le cas où c'est une JFrame
}
else if (liste[i] instanceof JDialog){
//traitement dans le cas où c'est un JDialog
}
}
interressant, mais je ne crois pas que tu ai compris mon problème : je
ne cherche pas les sous-fenêtres de ma fenêtre, mais toutes les fenêtres
qui ont été ouvertes.
Mon prog est en fait composé de module très différent qui se comporte un
peu comme des programme autonome dans une même JVM, impossible dans ses
condition de définir de Fenêtre principal, ni de lien entre ces fenêtres.
Ton algo permets de récupérer les JDialog qui sont associé à une JFrame
parente, pas de trouver toutes les JFrames ouvert.
Je pense qu'un truc de ce genre devrait faire l'affaire :
//Récupération de tous les composants de la Frame principale Components[] liste = maFrame.getComponents(); //itération sur ces composants for (int i = 0; i < liste.length; i++){ if (liste[i] instanceof JFrame){ //traitement dans le cas où c'est une JFrame } else if (liste[i] instanceof JDialog){ //traitement dans le cas où c'est un JDialog } }
interressant, mais je ne crois pas que tu ai compris mon problème : je
ne cherche pas les sous-fenêtres de ma fenêtre, mais toutes les fenêtres qui ont été ouvertes.
Mon prog est en fait composé de module très différent qui se comporte un peu comme des programme autonome dans une même JVM, impossible dans ses condition de définir de Fenêtre principal, ni de lien entre ces fenêtres.
Ton algo permets de récupérer les JDialog qui sont associé à une JFrame parente, pas de trouver toutes les JFrames ouvert.
Une autre idée ?
Black Myst
Vincent Cantin
interressant, mais je ne crois pas que tu ai compris mon problème : je ne cherche pas les sous-fenêtres de ma fenêtre, mais toutes les fenêtres qui ont été ouvertes.
Mon prog est en fait composé de module très différent qui se comporte un peu comme des programme autonome dans une même JVM, impossible dans ses condition de définir de Fenêtre principal, ni de lien entre ces fenêtres.
Ton algo permets de récupérer les JDialog qui sont associé à une JFrame parente, pas de trouver toutes les JFrames ouvert.
Une autre idée ?
Black Myst
J'ai bien une idee, mais je sens qu'on ne va pas l'aimer : termine ton programme, et si la JVM ne s'arrete pas, c'est qu'il reste des fenetres ouvertes :-D
.. je sais, je sais, c'etait pas drole Vincent
interressant, mais je ne crois pas que tu ai compris mon problème : je
ne cherche pas les sous-fenêtres de ma fenêtre, mais toutes les fenêtres
qui ont été ouvertes.
Mon prog est en fait composé de module très différent qui se comporte un
peu comme des programme autonome dans une même JVM, impossible dans ses
condition de définir de Fenêtre principal, ni de lien entre ces fenêtres.
Ton algo permets de récupérer les JDialog qui sont associé à une JFrame
parente, pas de trouver toutes les JFrames ouvert.
Une autre idée ?
Black Myst
J'ai bien une idee, mais je sens qu'on ne va pas l'aimer :
termine ton programme, et si la JVM ne s'arrete pas, c'est qu'il reste des
fenetres ouvertes :-D
interressant, mais je ne crois pas que tu ai compris mon problème : je ne cherche pas les sous-fenêtres de ma fenêtre, mais toutes les fenêtres qui ont été ouvertes.
Mon prog est en fait composé de module très différent qui se comporte un peu comme des programme autonome dans une même JVM, impossible dans ses condition de définir de Fenêtre principal, ni de lien entre ces fenêtres.
Ton algo permets de récupérer les JDialog qui sont associé à une JFrame parente, pas de trouver toutes les JFrames ouvert.
Une autre idée ?
Black Myst
J'ai bien une idee, mais je sens qu'on ne va pas l'aimer : termine ton programme, et si la JVM ne s'arrete pas, c'est qu'il reste des fenetres ouvertes :-D
.. je sais, je sais, c'etait pas drole Vincent
jocelyn
Salut,
Comment lances-tu ces fameux modules ? Il me semble que c au moment du lancement qu'on devrait pouvoir stocker une reference ?
-- Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne pas devenir un monstre lui-même
Salut,
Comment lances-tu ces fameux modules ? Il me semble que c au moment du
lancement
qu'on devrait pouvoir stocker une reference ?
--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même
Comment lances-tu ces fameux modules ? Il me semble que c au moment du lancement qu'on devrait pouvoir stocker une reference ?
-- Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne pas devenir un monstre lui-même
Black Myst
jocelyn wrote:
Salut,
Comment lances-tu ces fameux modules ? Il me semble que c au moment du lancement qu'on devrait pouvoir stocker une reference ?
Oui, c'est en gros ce que je fais, mais ca implique que tous les futurs programmeurs qui vont écrire de nouveau modules vont penser à me signaler toutes leurs nouvelles fenêtres. Actuellement c'est ecrit dans la doc (à plusieur endroits)... mais je ne crois pas que ce sera suffisant. Le pire, c'est qu'en cas d'oublie l'effet n'est pas du tout visible immédiatement... et ca pourrait faire un vilain bug.
Donc j'aimerais vraiment connaitre "a chaud" les fenetres ouvertes !
jocelyn wrote:
Salut,
Comment lances-tu ces fameux modules ? Il me semble que c au moment du
lancement
qu'on devrait pouvoir stocker une reference ?
Oui, c'est en gros ce que je fais, mais ca implique que tous les futurs
programmeurs qui vont écrire de nouveau modules vont penser à me
signaler toutes leurs nouvelles fenêtres. Actuellement c'est ecrit dans
la doc (à plusieur endroits)... mais je ne crois pas que ce sera suffisant.
Le pire, c'est qu'en cas d'oublie l'effet n'est pas du tout visible
immédiatement... et ca pourrait faire un vilain bug.
Donc j'aimerais vraiment connaitre "a chaud" les fenetres ouvertes !
Comment lances-tu ces fameux modules ? Il me semble que c au moment du lancement qu'on devrait pouvoir stocker une reference ?
Oui, c'est en gros ce que je fais, mais ca implique que tous les futurs programmeurs qui vont écrire de nouveau modules vont penser à me signaler toutes leurs nouvelles fenêtres. Actuellement c'est ecrit dans la doc (à plusieur endroits)... mais je ne crois pas que ce sera suffisant. Le pire, c'est qu'en cas d'oublie l'effet n'est pas du tout visible immédiatement... et ca pourrait faire un vilain bug.
Donc j'aimerais vraiment connaitre "a chaud" les fenetres ouvertes !
Mat Free
Comment lances-tu ces fameux modules ? Il me semble que c au moment du lancement qu'on devrait pouvoir stocker une reference ?
Oui, c'est en gros ce que je fais, mais ca implique que tous les futurs programmeurs qui vont écrire de nouveau modules vont penser à me signaler toutes leurs nouvelles fenêtres. Actuellement c'est ecrit dans la doc (à plusieur endroits)... mais je ne crois pas que ce sera suffisant.
Suffit de leur fournir des classes héritant de JFrame et JDialog qui comptabilise automatiquement le nombre d'instances via une variable de type static. Après le comptage sera très simple.
Le pire, c'est qu'en cas d'oublie l'effet n'est pas du tout visible immédiatement... et ca pourrait faire un vilain bug.
Donc j'aimerais vraiment connaitre "a chaud" les fenetres ouvertes !
-- Mat
Comment lances-tu ces fameux modules ? Il me semble que c au moment du
lancement
qu'on devrait pouvoir stocker une reference ?
Oui, c'est en gros ce que je fais, mais ca implique que tous les futurs
programmeurs qui vont écrire de nouveau modules vont penser à me signaler
toutes leurs nouvelles fenêtres. Actuellement c'est ecrit dans la doc (à
plusieur endroits)... mais je ne crois pas que ce sera suffisant.
Suffit de leur fournir des classes héritant de JFrame et JDialog
qui comptabilise automatiquement le nombre d'instances via une
variable de type static. Après le comptage sera très simple.
Le pire, c'est qu'en cas d'oublie l'effet n'est pas du tout visible
immédiatement... et ca pourrait faire un vilain bug.
Donc j'aimerais vraiment connaitre "a chaud" les fenetres ouvertes !
Comment lances-tu ces fameux modules ? Il me semble que c au moment du lancement qu'on devrait pouvoir stocker une reference ?
Oui, c'est en gros ce que je fais, mais ca implique que tous les futurs programmeurs qui vont écrire de nouveau modules vont penser à me signaler toutes leurs nouvelles fenêtres. Actuellement c'est ecrit dans la doc (à plusieur endroits)... mais je ne crois pas que ce sera suffisant.
Suffit de leur fournir des classes héritant de JFrame et JDialog qui comptabilise automatiquement le nombre d'instances via une variable de type static. Après le comptage sera très simple.
Le pire, c'est qu'en cas d'oublie l'effet n'est pas du tout visible immédiatement... et ca pourrait faire un vilain bug.
Donc j'aimerais vraiment connaitre "a chaud" les fenetres ouvertes !
-- Mat
zazoun2
Bonjour,
Il est possible d'obtenir la liste de toutes les frames créées par une application avec la méthode static java.awt.Frame[] java.awt.Frame.getFrames().
Cette méthode ne retourne évidemment pas les JDialog, Dialog, JWindow etc crées par l'application. Par contre, en fouinant un peu dans le code de JDialog et JWindow, que les fenêtres Swing appartiennent forcément à une Frame, qui peut être l'instance SwingUtilities.getSharedOwnerFrame() (d'ailleurs dans la liste de JFrame retournée pas Frame.getFrames()).
Donc, si tes développeurs utilisent uniquement des fenêtres Swing, à partir des JFrame retournées par Frame.getFrames(), et en utilisant la méthode Window[] Window.getOwnedWindows() récursivement, tu dois pouvoir obtenir la liste de toutes les fenêtres d'une application.
Zazoun
Bonjour,
Il est possible d'obtenir la liste de toutes les frames créées par une
application avec la méthode static java.awt.Frame[]
java.awt.Frame.getFrames().
Cette méthode ne retourne évidemment pas les JDialog, Dialog, JWindow
etc crées par l'application. Par contre, en fouinant un peu dans le
code de JDialog et JWindow, que les fenêtres Swing appartiennent
forcément à une Frame, qui peut être l'instance
SwingUtilities.getSharedOwnerFrame() (d'ailleurs dans la liste de
JFrame retournée pas Frame.getFrames()).
Donc, si tes développeurs utilisent uniquement des fenêtres Swing, à
partir des JFrame retournées par Frame.getFrames(), et en utilisant la
méthode Window[] Window.getOwnedWindows() récursivement, tu dois
pouvoir obtenir la liste de toutes les fenêtres d'une application.
Il est possible d'obtenir la liste de toutes les frames créées par une application avec la méthode static java.awt.Frame[] java.awt.Frame.getFrames().
Cette méthode ne retourne évidemment pas les JDialog, Dialog, JWindow etc crées par l'application. Par contre, en fouinant un peu dans le code de JDialog et JWindow, que les fenêtres Swing appartiennent forcément à une Frame, qui peut être l'instance SwingUtilities.getSharedOwnerFrame() (d'ailleurs dans la liste de JFrame retournée pas Frame.getFrames()).
Donc, si tes développeurs utilisent uniquement des fenêtres Swing, à partir des JFrame retournées par Frame.getFrames(), et en utilisant la méthode Window[] Window.getOwnedWindows() récursivement, tu dois pouvoir obtenir la liste de toutes les fenêtres d'une application.
Zazoun
Black Myst
Zazoun wrote:
Bonjour,
Il est possible d'obtenir la liste de toutes les frames créées par une application avec la méthode static java.awt.Frame[] java.awt.Frame.getFrames().
Cette méthode ne retourne évidemment pas les JDialog, Dialog, JWindow etc crées par l'application. Par contre, en fouinant un peu dans le code de JDialog et JWindow, que les fenêtres Swing appartiennent forcément à une Frame, qui peut être l'instance SwingUtilities.getSharedOwnerFrame() (d'ailleurs dans la liste de JFrame retournée pas Frame.getFrames()).
Donc, si tes développeurs utilisent uniquement des fenêtres Swing, à partir des JFrame retournées par Frame.getFrames(), et en utilisant la méthode Window[] Window.getOwnedWindows() récursivement, tu dois pouvoir obtenir la liste de toutes les fenêtres d'une application.
Zazoun
Merci beaucoup, ca marche nickel, j'ai pu faire ce que je voullais.
Zazoun wrote:
Bonjour,
Il est possible d'obtenir la liste de toutes les frames créées par une
application avec la méthode static java.awt.Frame[]
java.awt.Frame.getFrames().
Cette méthode ne retourne évidemment pas les JDialog, Dialog, JWindow
etc crées par l'application. Par contre, en fouinant un peu dans le
code de JDialog et JWindow, que les fenêtres Swing appartiennent
forcément à une Frame, qui peut être l'instance
SwingUtilities.getSharedOwnerFrame() (d'ailleurs dans la liste de
JFrame retournée pas Frame.getFrames()).
Donc, si tes développeurs utilisent uniquement des fenêtres Swing, à
partir des JFrame retournées par Frame.getFrames(), et en utilisant la
méthode Window[] Window.getOwnedWindows() récursivement, tu dois
pouvoir obtenir la liste de toutes les fenêtres d'une application.
Zazoun
Merci beaucoup, ca marche nickel, j'ai pu faire ce que je voullais.
Il est possible d'obtenir la liste de toutes les frames créées par une application avec la méthode static java.awt.Frame[] java.awt.Frame.getFrames().
Cette méthode ne retourne évidemment pas les JDialog, Dialog, JWindow etc crées par l'application. Par contre, en fouinant un peu dans le code de JDialog et JWindow, que les fenêtres Swing appartiennent forcément à une Frame, qui peut être l'instance SwingUtilities.getSharedOwnerFrame() (d'ailleurs dans la liste de JFrame retournée pas Frame.getFrames()).
Donc, si tes développeurs utilisent uniquement des fenêtres Swing, à partir des JFrame retournées par Frame.getFrames(), et en utilisant la méthode Window[] Window.getOwnedWindows() récursivement, tu dois pouvoir obtenir la liste de toutes les fenêtres d'une application.
Zazoun
Merci beaucoup, ca marche nickel, j'ai pu faire ce que je voullais.
sourria
Black Myst a écrit le 27/07/2004 à 01h09 :
Salut,
J'aurrais besoin de connaître la liste de toutes les instances de JFrame
et JDialog créer par mon application. Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les instances que je créer, mais cette solution n'est pas satifaisante pour plusieurs raisons - c'est vraiment moche dans le code - gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un OptionPane) - Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui
ouvre une fenêtre sans vous donner sa référence. - gros risque d'oublie (je sais mais c'est vraiment un gros risque)
J'aurrais besoin de connaître la liste de toutes les instances de JFrame
et JDialog créer par mon application.
Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les
instances que je
créer, mais cette solution n'est pas satifaisante pour plusieurs
raisons
- c'est vraiment moche dans le code
- gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un
OptionPane)
- Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui
ouvre une fenêtre sans vous donner sa référence.
- gros risque d'oublie (je sais mais c'est vraiment un gros risque)
J'aurrais besoin de connaître la liste de toutes les instances de JFrame
et JDialog créer par mon application. Le problème c'est que je ne trouve pas la méthode qui va bien.
Actuellement, j'ajoute à une liste chaînée toutes les instances que je créer, mais cette solution n'est pas satifaisante pour plusieurs raisons - c'est vraiment moche dans le code - gros risque d'oublie (surtout lorsqu'on ouvre un JFileChooser ou un OptionPane) - Certaines fenêtres sont ouverte par des API externe comme JavaHelp qui
ouvre une fenêtre sans vous donner sa référence. - gros risque d'oublie (je sais mais c'est vraiment un gros risque)