IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

comment accéder à un JDialog à partir d'un JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Points : 57
    Points
    57
    Par défaut comment accéder à un JDialog à partir d'un JFrame
    bonjour à tous,
    je travaille sur une application tiers qui ouvre un JDialog en passant la JFrame mère en modal.
    Mon problème est que je n'ai pas accès à ce JDialog, je n'ai que la JFrame.

    Je voudrais empêcher l'affichage d'une autre boîte de dialogue sur cette JFrame.
    J'ai 3 solutions mais je n'ai aucune idée de la manière de procéder:
    - Est-il possible de savoir si oui ou non une JFrame est bloquée en modal?
    - Est-il possible de récupérer la JDialog à partir de la JFrame?

    Pour information
    - la fonction getOwnedWindows() de JFrame me retourne 0 Window.
    - la fonction getComponentCount() vaut toujours 2 (avec ou sans JDialog)
    - la fonction isFocusableWindow() me retourne toujours true (avec ou sans JDialog)
    - l'application tiers est basé sur les plugins Eclipse (j'aimerais ne pas passer par l'API eclipse mais si je n'ai pas d'autres choix...).

    Je ne peux pas vous donner le code de la création de la JDialog car je ne l'ai pas (application tiers), j'ai juste leur API qui me donne la JFrame.

    Merci pour votre aide

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Je n'ai pas trop compris ton problème, ni le rapport entre swing et les plugins d'eclipse...

    Mais je peux répondre en partie :
    - une JFrame ne peut pas être modale.
    - par contre JFrame possède les méthodes isAlwaysOnTop et setAlwaysOnTop
    - tu ne pourras pas récupérer la JDialog à partir de la JFrame avec les méthodes basiques. Tu dois ajouter ta JDialog (au moment de sa construction) en attribut/variable de ta JFrame pour y avoir accès par la suite.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si getownedwindow renvoie une lsite vide, c'est que la dialog a été créée avec new Dialog(null), sans owner donc. Pas de chance, çà va pas être possible :p

    Si t'arrive à choper une classe dans l'application tiers ou une méthode interne utiliser poru afficher la dialog, tu poeux toujours jouer à la surcharger ou l'effacer. C'est de la bidouille, sans les sourceS.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par morph41 Voir le message
    Je n'ai pas trop compris ton problème, ni le rapport entre swing et les plugins d'eclipse...
    C'est compliqué à expliquer
    Pour préciser, on développe une intégration entre 2 applications (CATIA et Teamcenter), donc on utilise l'API CATIA et l'API Teamcenter.
    Une de nos fonctionnalité est de faire une sauvegarde depuis CATIA dans Teamcenter. Pour ça, on affiche un gros Panel dans lequel l'utilisateur choisit les options de sauvegardes (noms, identifiant, type...)
    Dans Teamcenter (l'interface est un objet AIFDesktop qui hérite de JFrame), il est possible d'afficher un panneau d'option (c'est ça le JDialog).
    Si ce panneau est affiché, et qu'on lance une sauvegarde alors il y a interblocage avec notre Panel: notre Panel est bloqué mais pas le JDialog (on est olbigé de faire alt-tab pour passer la JDialog au premier plan, puis cliquer sur OK pour la fermer pour pouvoir continuer la sauvegarde).

    Donc ce que je voudrais faire, c'est vérifier que Teamcenter n'est pas "bloquer" par une boîte de dialogue et si c'est le cas, arrêter notre processus de sauvegarde.
    Je ne sais pas si c'est clair

    Citation Envoyé par morph41 Voir le message
    Mais je peux répondre en partie :
    - une JFrame ne peut pas être modale.
    - par contre JFrame possède les méthodes isAlwaysOnTop et setAlwaysOnTop
    - tu ne pourras pas récupérer la JDialog à partir de la JFrame avec les méthodes basiques. Tu dois ajouter ta JDialog (au moment de sa construction) en attribut/variable de ta JFrame pour y avoir accès par la suite.
    Pour la notion de modal alors j'ai mal du comprendre le principe: ce n'est pas le fait d'avoir une frame bloquée tant que la boîte de dialogue (qui a mis le statut modal) est ouverte?
    + j'ai décompilé la classe de l'API et j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public abstract class AbstractDialogBox extends JDialog
     
    ...
     
    public AbstractDialogBox(Frame frame, String s, boolean flag)
        {
            super((frame instanceof ClassDesktop) ? ((ClassDesktop)frame).getFrame() : frame, s, flag);
    et l'appel du constructeur prend ces paramètres:
    frame, command_name, Boolean.TRUE
    C'est pour ça que je disais que la JFrame était modal.

    Pour les 2 fonctions isAlwaysOnTop et setAlwaysOnTop, j'ai testé et ça ne marche pas.
    La JDialog n'est pas créée par moi mais par le programme Tiers (je n'ai pas la main dessus), donc je n'y ai pas accès(l'API ne fournit rien pour la récupérer).

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    que retourne

    ((AIFDesktop)frame).getFrame().getownedwindows()?

    Accessoirement, quand une boite de dialogue modale apparait, quelle que soit son owner, toutes les autres Frames sont bloquées. C'est pas liomité au owner.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    Impressionnant, ça marche
    Merci à tous pour votre aide.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    çà aide de décompiler le code (même si c'est illégal....)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment accéder à plusieurs comptes à partir d'une seule interface
    Par phplover_2010 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 21/07/2010, 12h57
  2. Réponses: 1
    Dernier message: 22/09/2009, 14h26
  3. Comment ouvrir un JDialog à partir d'une fenetre principale
    Par une_tite_question dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 24/04/2008, 18h54
  4. Réponses: 3
    Dernier message: 02/04/2007, 21h37
  5. Comment accéder à un annuaire LDAP à partir de Delphi ?
    Par plante20100 dans le forum API, COM et SDKs
    Réponses: 25
    Dernier message: 28/07/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo