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 :

Petits problémes de JFileChooser


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut Petits problémes de JFileChooser
    Bonjour à tous,

    J'ai créé une interface graphique en Java grâce à Eclipse mais quelques petits soucis de finition persistent.

    Tout d'abord, un topo de mon sujet :

    J'ai deux projets : un nommé local et l'autre nommé interface qui ont chacun un build.xml (respectivement buid1 et build2).

    Build1 effectue des traitements et à un certain moment appelle build2 qui lance ma Jframe. Et c'est là qu'interviennent deux soucis :
    • Le JFileChooser n'a pas le focus
    • Elle n'apparait pas dans la barre d'outil de Windows


    Assez contraignant surtout si l'utilisateur ne sait pas qu'une jFrame doit apparaitre.

    Par contre, chose bizarre, en plaçant l'appel du build2 au début du build1 (et donc avant tout autre traitement), le focus fonctionne bien

    Voilà le code de ma fenêtre :
    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
     
    import javax.swing.JFileChooser;
    public class Fenetre {
     
    	private JFileChooser jFileChooser = null;
    	private String adresse; 
     
    	public JFileChooser getJFileChooser(){
    		jFileChooser = new JFileChooser();
    		jFileChooser.setApproveButtonText("OK");
    		jFileChooser.showOpenDialog(null);
    		jFileChooser.setVisible(true);
    		if (jFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){	
    			adresse = (jFileChooser.getSelectedFile().getAbsolutePath()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    		}
    		return jFileChooser;
    	}
     
    	public void initialisation(){
    		this.getJFileChooser();
    	}
     
    	public String getAdresse(){
    		return adresse;
    	}
    }
    Et le code du Main appelant cette fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import java.io.IOException;
    import javax.swing.UIManager;
     
     
     
    public class Main {
     
    		// TODO Auto-generated method stub
    		Fenetre fenetre = new Fenetre();
    		fenetre.initialisation();
    		adresse = fenetre.getAdresse();
     
    }
    Merci à ceux qui se pencheront sur mes petits soucis.

    Bonne journée.


    [EDIT] Code modifié (voir 3em message)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Bon aprés avoir consulté la FAQ (merci adiGuba d'avoi déplacé mon sujet), j'ai modifié mon code et ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			jFrame.setVisible(true);
    			jFrame.setAlwaysOnTop(true);
    .

    Mais ça ne fonctionne toujours pas

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    J'aime faire des monologues

    Bon en cherchant un peu j'ai appris que pour les JfileChooser, la décalaration d'un Jframe et Jpanel n'était pas obligatoire, j'ai donc modifié mon code en conséquence. Mise à jour du code sur le premier message donc .

    PAr ocntre toujours le probléme de focus et d'affichage dans la barre d'outil...

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, il n'y a que les JFrame qui sont visibles dans la barre des tâches.
    Chez moi le focus est bien sur le JFileChooser quand j'exécute ton code.

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En même temps un JFileChooser est un JDialog, or les JDialog n'apparaissent pas dans la barre des tâhes. Donc le JFileChooser n'apparait pas dans la barre des tâches CQFD.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Bon, par soucis de d'affichage, je suis repassé par une Jpanel; Celle-ci contient un bouton qui appelle la pop-up de JFileChoose une fois qu'on à cliqué dessus.
    Par contre avant le probléme de focus j'en rencontre un autre : la fonction traitement() de la classe principale s'effectue avant même que l'utilisateur est sélectionné le fichier, et là j'avoue c'est beaucoup plus embétant...
    Comment faire pour que celle-ci ne s'éxecute qu'une fois le fichier sélectionné?

    Voilà les nouveau code :
    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
     
    import java.io.IOException;
    import javax.swing.UIManager;
     
     
     
    public class Main {
     
    		// TODO Auto-generated method stub
    		Fenetre fenetre = new Fenetre();
    		fenetre.initialisation();
    		adresse = fenetre.getAdresse();
     
                           traitement();
     
    }
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.BorderLayout;
    import java.awt.Dimension;
     
    import javax.swing.JButton;
    import javax.swing.JLabel;
    public class Fenetre {
     
    	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="24,48"
    	private JPanel jContentPane = null;
    	private JFileChooser jFileChooser = null;
    	private String adresse;
    	private JButton jButton = null;
    	private JLabel jLabel = null; 
     
    	/**
             * This method initializes jFrame       
             *      
             * @return javax.swing.JFrame   
             */
    	private JFrame getJFrame() {
    		if (jFrame == null) {
    			jFrame = new JFrame();
    			jFrame.setSize(new Dimension(272, 101));
    			jFrame.setContentPane(getJContentPane());
    			jFrame.setTitle("Sélection du fichier");
    			jFrame.setVisible(true);
    		}
    		return jFrame;
    	}
     
    	/**
             * This method initializes jContentPane 
             *      
             * @return javax.swing.JPanel   
             */
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jLabel = new JLabel();
    			jLabel.setText("Sélectionner le fichier Sogéti");
    			jContentPane = new JPanel();
    			jContentPane.setLayout(new BorderLayout());
    			jContentPane.setVisible(true);
    			jContentPane.add(getJButton(), BorderLayout.SOUTH);
    			jContentPane.add(jLabel, BorderLayout.NORTH);
    		}
    		return jContentPane;
    	}
     
    	private JFileChooser getJFileChooser(){
    		jFileChooser = new JFileChooser();
    		jFileChooser.setApproveButtonText("OK");
    		jFileChooser.showOpenDialog(null);
    		jFileChooser.setVisible(true);
    		if (jFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){	
    			adresse = (jFileChooser.getSelectedFile().getAbsolutePath()); 
    		}
    		return jFileChooser;
    	}
     
     
    	public void initialisation(){
    		this.getJFrame();
    	}
     
    	public void close(){
    		this.jFrame.dispose();
    	}
     
    	public String getAdresse(){
    		return adresse;
    	}
     
    	/**
             * This method initializes jButton      
             *      
             * @return javax.swing.JButton  
             */
    	private JButton getJButton() {
    		if (jButton == null) {
    			jButton = new JButton();
    			jButton.setText("Sélection");
    			jButton.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					getJFileChooser();
    				}
    			});
    		}
    		return jButton;
    	}
     
     
     
    }

    Merci

  7. #7
    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
    Il faut appeler ta méthode traitement lorsque le fichier a été sélectionné (dans ta méthode getJFileChooser, là où tu renseignes adresse, par ex), ou que tu mettes en place un système de listener. Je te conseille de regarder How to Use File Choosers.

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

Discussions similaires

  1. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 21h13
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 22h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 21h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 13h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 19h55

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