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 :

[JFileChooser] Non modal


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut [JFileChooser] Non modal
    Bonjour,

    J'utilise JMF pour lire des fichiers audio. Pour sélectionner un fichier, j'utilise un jfilechooser qui contient un bouton lire sur la droite (il s'agit d'un accessoire). Ce bouton ouvre un lecteur qui permet de régler le volume, affiche la progression de la lecture...

    Cependant, le jfilechooser étant modal, je ne peux absolument contrôler le lecteur qui se trouve dans une frame.

    J'ai essayé ceci mais le jfilechooser n'apparaît même pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JFileChooser jFileChooser = new JFileChooser() {
     
    					    protected JDialog createDialog(Component parent) throws HeadlessException {
    					        JDialog dialog = super.createDialog(parent);
    					        dialog.setModal(false);
    					        dialog.setVisible(true);
    					        return dialog;
    					    }
    					};

  2. #2
    Membre averti
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    Moi non plus je ne comprends pas !
    La méthode showDialog() de la classe JFileChooser appelle la méthode createDialog() que tu as redéfini afin d'affecter la variable privée dialog de la classe. Cependant, quelques lignes plus loin, on trouve :
    L'apparition du FileChooser semble donc basée sur la modalité (si tu mets setModal(true) dans ta procédure, ça marche. Je vois pas trop ? désolé

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut


    N'y a-t-il pas un moyen de contourner le problème pourque je puisse me servir de la frame ouverte au même temps que le jfilechooser?

  4. #4
    Membre averti
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    Et si tu transformes ta frame en JDialog ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut
    J'y avais déjà pensé mais je ne peux pas passer le jfilechooser comme parent.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    En bidouillant un peu le source original on y arrive.
    J'espere que tu arriveras à en tirer qqchose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    JFileChooser jfc = new JFileChooser(){
    		JDialog dialog;
    		int returnValue;
     
    		protected JDialog createDialog(Component parent) throws HeadlessException {
    			Frame frame = parent instanceof Frame ? (Frame) parent
    					: (Frame)SwingUtilities.getAncestorOfClass(Frame.class, parent);
     
    			String title = getUI().getDialogTitle(this);
    			getAccessibleContext().setAccessibleDescription(title);
     
    			JDialog dialog = new JDialog(frame, title);
     
    			Container contentPane = dialog.getContentPane();
    			contentPane.setLayout(new BorderLayout());
    			contentPane.add(this, BorderLayout.CENTER);
     
    			if (JDialog.isDefaultLookAndFeelDecorated()) {
    				boolean supportsWindowDecorations = 
    					UIManager.getLookAndFeel().getSupportsWindowDecorations();
    				if (supportsWindowDecorations) {
    					dialog.getRootPane().setWindowDecorationStyle(JRootPane.FILE_CHOOSER_DIALOG);
    				}
    			}
     
    			dialog.pack();
    			dialog.setLocationRelativeTo(parent);
     
    			return dialog;
    		}
     
    		public int showDialog(Component parent, String approveButtonText)
            throws HeadlessException {
    			if(approveButtonText != null) {
    			    setApproveButtonText(approveButtonText);
    			    setDialogType(CUSTOM_DIALOG);
    			}
    			dialog = createDialog(parent);
    			dialog.addWindowListener(new WindowAdapter() {
    			    public void windowClosing(WindowEvent e) {
    				returnValue = CANCEL_OPTION;
    				dialog.dispose();
    				dialog = null;
    			    }
    			});
    			returnValue = ERROR_OPTION;
    			rescanCurrentDirectory();
     
    			dialog.show();
    			//dialog.dispose();
    			//dialog = null;
    			return 0;
    		    }
    	};

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut
    Ce que je ne comprends pas, c'est qu'en utilisant ce code, cela fait exactement la même chose que mon code plus haut. J'ai l'impression que le jfilechooser est créé mais qu'il n'apparait pas...

    Je n'y comprends absolument rien

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut
    En fait, je suis revenu à l'utilisation de la fenêtre de la JDialog mais sans préciser le parent et en mettant le booléen modal à oui, cela fonctionne.

    Merci pour vos propositions.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Je sais ce post remonte mais c'est pour mon bien ^^.

    Voilà je voulais également supprimer le caractère modal du JFileChooser et cela est fait correctement.
    Cependant, avec la version de barbu0055, les bouton "annuler" et "enregistrer" ne marche pas... Comment pourrais-je les faire marcher?

    Merci d'avance

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

Discussions similaires

  1. [MFC] instance unique de dialogue non modale
    Par venomelektro dans le forum MFC
    Réponses: 5
    Dernier message: 02/02/2005, 12h41
  2. dimension boite de dialogue non modale
    Par afan dans le forum MFC
    Réponses: 25
    Dernier message: 21/10/2004, 13h35
  3. Réponses: 4
    Dernier message: 13/06/2004, 15h28
  4. [debutant] JDialog non modal
    Par andresan dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 12/05/2004, 13h40
  5. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56

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