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

Interfaces Graphiques en Java Discussion :

Lancer application externe - Fixer une popup


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut Lancer application externe - Fixer une popup
    Bonjour,
    J'ai une fenetre avec un bouton qui recupere une liste de fichiers dans un repertoire et affiche leur nom dans une JPopupMenu.
    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
     
    private void searchMusic() {
        	File nameDirectory = new File("C:\\chemin ou chercher les fichiers");
     
    	// recuperation du tableau contenant les noms de fichiers apres les avoir filtrés
    	File[] tableauDeFichiers = nameDirectory.listFiles();
    	List listeDeNom = new List();
    	for(int i=0; i<tableauDeFichiers.length; i++) {
    		String nomFichier = tableauDeFichiers[i].getName();
    		if (nomFichier.substring(nomFichier.length()-3).equalsIgnoreCase("mp3")){
    			listeDeNom.add(nomFichier);
    			System.out.println(nomFichier);
    		}
            }
     
    	// ajout des noms de fichiers au popup
        	JPopupMenu listeMusic = new JPopupMenu();
            ActionListener menuListener = new ActionListener() {
                  public void actionPerformed(ActionEvent event) {
                         System.out.println("Popup menu item " + event.getActionCommand() + " a ete cliqué");
                         playMusic();
                 }
             };
     
            for (int i = 0; i < listeDeNom.getItemCount(); i++) {
            	JMenuItem item;
        		listeMusic.add(item = new JMenuItem(listeDeNom.getItem(i)));
        		item.addActionListener(menuListener);
    	}
     
        	listeMusic.setVisible(true);    	
     
        	Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    	Dimension mainSizeMainWindow = getSize();
    	Dimension mainSizeListeMusic = listeMusic.getSize();
        	listeMusic.setLocation((screenSize.width - mainSizeMainWindow.width), (screenSize.height - mainSizeMainWindow.height - mainSizeListeMusic.height - 50));
        	int taillefenetre = mainSizeListeMusic.height;
    }
    Voici donc les problemes qque je rencontre :
    - A la fin de mon code je colle donc la pop up juste au dessus de la fenetre mere, mais si je bouge la fenetre mere, bien sur la pop up elle ne bouge pas, je ne sais pas comment y remedier.

    - quand je clique sur un element de la pop up celle ci se ferme et je dois recliquer a nouveau sur le bouton qui lui a donne naissance

    - concernant ma recherche de fichier je travaille en faisant un substring de mes noms de fichiers, j'ai pensé a utilisé un FileFilter mais je ne voie pas comment faire en fait.

    - et comment faire pour lancer une application pour lire les fichiers sur lesquels je clique sur la popup, lire la musique, visualiser les images, etc.

    Merci pour le temps que vous prendrez.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    Personne!!!

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    je propose juste une piste, j'ai pas de solution directe :

    tu pourrais remplacer le JPopupmenu par un JDialog (que tu personnalise)
    - dont tu retire la bordure (setUndecorated())
    - que tu mets toujours sur le dessus (setAlwaysontop())

    essai (pas de garanti): setLocationReltiveTo(tafenetre)
    sinon tu place un ecouteur sur les mouvements de ta fenetre principale et tu applique les memes mouvements au jdialog.



    pour lire des video, images, musique ...etc... tu peux utiliser (jvm 1.6) :
    Desktop desktop = Desktop.getDesktop ();
    desktop.open (new File (tonfichier));

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par eclesia
    je propose juste une piste, j'ai pas de solution directe :

    tu pourrais remplacer le JPopupmenu par un JDialog (que tu personnalise)
    - dont tu retire la bordure (setUndecorated())
    - que tu mets toujours sur le dessus (setAlwaysontop())
    Bonjour,
    Merci pour ta reponse.
    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
        	JDialog listeMusic = new JDialog();
        	listeMusic.setUndecorated(true);
        	listeMusic.setSize(200, 200);
    //    	listeMusic.setLocationRelativeTo(btnPicture);
        	// Listener des elements de la popup
            ActionListener menuListener = new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                	System.out.println("Popup menu item ["
                      + event.getActionCommand() + "] was pressed.");
                	// Ici je recupere le nom du fuchier clique et je dois le retransformer en type File
                	File leFichierChoisi = new File("C:monrepertoire\\" + event.getActionCommand());
                	playMusic(leFichierChoisi);
                }
              };
            //ajout de la liste de nom de fichiers a la popup  
        	for (int i = 0; i < listeDeNom.getItemCount(); i++) {
        		JMenuItem item;
        		listeMusic.add(item = new JMenuItem(listeDeNom.getItem(i)));
        		item.addActionListener(menuListener);
    		}
        	listeMusic.setVisible(true);
    J'ai donc essaye avec une JDialog mais mon probleme est que je n'y affiche que le dernier item, en fait le dernier affiche a chaque fois le precedent.
    Ca pourrait je pense marcher mais en midifiant quelque trucs.
    Par contre si je reste sur le JPopUpMenu, peux t on faire en sorte d'avoir une scrollbar si la liste est longue, en effet je n ai pas trouve de ScrollBar lié a une JPopUpMenu.

    Citation Envoyé par eclesia
    essai (pas de garanti): setLocationReltiveTo(tafenetre)
    sinon tu place un ecouteur sur les mouvements de ta fenetre principale et tu applique les memes mouvements au jdialog.
    Je verrai ca apres.
    Citation Envoyé par eclesia
    pour lire des video, images, musique ...etc... tu peux utiliser (jvm 1.6) :
    Desktop desktop = Desktop.getDesktop ();
    desktop.open (new File (tonfichier));
    J'ai lu ceci sur le tuto de Sun.
    Before launching the browser, email client, or any application, DesktopDemo must determine whether your platform supports the API. First, however, DesktopDemo disables all the graphical text fields and buttons. It enables these graphical components after determining that the platform supports them.
    ...
    Use the Desktop.isDesktopSupported() method to determine whether the Desktop API is available. On the Solaris Operating System and the Linux platform, this API is dependent on Gnome libraries. If those libraries are unavailable, this method will return false. After determining that the API is supported, that is, the isDesktopSupported() returns true, the application can retrieve a Desktop instance using the static method getDesktop().
    Donc du coup ne risque t on pas de perdre de la portabilité, certes c'est mieux que Runtime.

Discussions similaires

  1. Lancer une application externe depuis une applet
    Par kjimmie dans le forum Applets
    Réponses: 2
    Dernier message: 18/12/2011, 14h19
  2. lancer une application externe dans une fenêtre
    Par lilivounet dans le forum Windows
    Réponses: 0
    Dernier message: 29/07/2007, 17h03
  3. Réponses: 3
    Dernier message: 08/07/2006, 20h59
  4. lancer application externe
    Par dmalik dans le forum Général Python
    Réponses: 1
    Dernier message: 28/11/2005, 16h39
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 23h07

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