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

AWT/Swing Java Discussion :

accessible parent pour un jpanel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut accessible parent pour un jpanel
    bonsoir,
    j'ai crée un objet extends JPanel dans le quel j'ai fait implements MouseListener, MouseMotionListener et je l'ai placer dans une JFrame,
    le problème c'est que quand j'utilise la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void mouseClicked(MouseEvent e)
    de ma classe je doit afficher un JDialog sauf que le constructeur du JDialog demande obligatoirement une instance de Frame de window ou de Dialog, alors j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((JFrame)MonPanel.getAccessibleContext().getAccessibleParent(),true)
    dans le constructeur de mon JDialog je reçoit cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JPanel cannot be cast to javax.swing.JFrame
    alors merci de me donner comment avoir la réference de la Frame dans lequelle se trouve mon Panel...

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Si tu as construit ton écouteur de la souris à peu près comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MaFenetre extends JFrame
    {
     class PourMaSouris implements MouseListener
     {
     ...
     }
    ...
    }
    Alors, tu peux écrire, dans ton mouseClicked :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dialog = new JDialog(MaFenetre.this);
    L'expression MaFenetre.this, écrite dans une classe interne, désigne l'instance de classe conteneur. Donc, ici, une JFrame, qui est justement ce que l'on désire.

  3. #3
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    non ce n'est pas une sous classe c'est une classe a part,
    et si ce que je demande n'est pas possible est ce qu'il est possible de faire en sorte qu'une JFrame se comporte comme une JDialog (cad elle ne laisse pas la main de passer a la fenetre ne dessous tant que elle ne se ferme pas),
    en fait le problème c'est que le JDialog ne propose comme constructeur que le frame, window, ou le dialog. et moi l'objet est placer sur un objet extends JComonent et il est impossible de le changer....

  4. #4
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    Bonjour

    Est-ce que cela ferait l'affaire ?:
    JDialog d = new JDialog();
    d.setTitle("Créé sans JFrame et Dialog");
    d.setSize(500, 500);
    d.show();

  5. #5
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    merci, mais non ça le fait pas!!
    ce code te crée un JDialog, mais le fait de ne pas entrer la fenetre parente te laisse la mains pour y acceder et ça detruit l'objectif du JDialog qui est justement de t'empecher d'acceder a la fenetre mere tant que le jdialog est affiché !!

  6. #6
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    Voici un truc qui permet à un JFrame de garder le focus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    addWindowFocusListener(new WindowAdapter(){			
    		public void windowLostFocus(WindowEvent e){
    			if (isVisible()) {
    			       requestFocus();
                                                  Toolkit.getDefaultToolkit().beep();	
    			}	
    		}
    });
    Pour ce qui est de requestFocus() je doute que c'est portable

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

Discussions similaires

  1. Access, requete pour supprimer une ligne ?
    Par floran30 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/06/2006, 11h13
  2. Réponses: 7
    Dernier message: 16/06/2006, 11h09
  3. Access, pb pour syncroniser 2formulaires
    Par sophie_44 dans le forum Access
    Réponses: 5
    Dernier message: 17/05/2006, 18h20
  4. "access denied" pour root en réseau
    Par Chauve souris dans le forum Débuter
    Réponses: 1
    Dernier message: 18/04/2006, 18h21
  5. [SGBDR][Access]aide pour reltion
    Par Alex35 dans le forum Access
    Réponses: 1
    Dernier message: 21/03/2006, 18h48

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