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 :

Ouvrir une boite de dialogue JFileChooser avec un bouton [Débutant(e)]


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut Ouvrir une boite de dialogue JFileChooser avec un bouton
    Bonsoir à tous,
    J'ai créé une interface graphique comprenant à sa droite une zone graphique et à sa gauche trois boutons verticaux centré (Ouvrir, copier et effacé). Je voudrais qu'au clique sur le bouton "ouvrir" provoque une action afin qu'apparaisse une fenêtre JFileChooser pour sélectionner un fichier image (document scanner). J'ai testé le code doc Oracle mais il n'ouvre que la boite de dialogue et pas ma fenêtre.J'espère vous avoir bien expliqué le problème.
    Merci à tous les codeurs pour vos réponses.
    PS: voici les codes.

    main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package Logiciel;
     
    import logiciel_fenetre.Fenetre;
     
    public class Main {
     
    	public static void main(String[] args) {
     
    		new Fenetre ();
    	}
     
    }
    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
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    package logiciel_fenetre;
     
     
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Fenetre extends JFrame{
     
    	public static final String newline = null;
     
    	//Création d'un panneau pour insérer un graphique.
    	private Panneau pan = new Panneau();
     
    	//Création d'un conteneur.
    	private JPanel container = new JPanel();
     
    	//Ajout d'un JPanel pour inclure la box afin de la positionner.
    	private JPanel jpl = new JPanel();
     
    	//Creation de boutons.
    	private JButton btn1 = new JButton("Ouvrir");
    	private JButton btn2 = new JButton("Copier");
    	private JButton btn3 = new JButton("Effacer");
     
    	//Création d'une box pour positionner nos boutons verticalement.
    	Box panneauBouton = Box.createVerticalBox();
     
    	//Création d'un sélecteur de ficher.
    	private JFileChooser jfc = new JFileChooser();
    		int returnval = jfc.showOpenDialog(btn1);
     
    	//Ajout d'une barre de menu.
    	private JMenuBar menuBar = new JMenuBar();
     
    	//Ajout d'un menu.
    	private JMenu ficher = new JMenu("Ficher"),
    			aPropos = new JMenu("À propos");
     
    	private JMenuItem quitter = new JMenuItem("Quitter"),
    			aProposItem = new JMenuItem("Lisez-moi");	
     
    	public Fenetre(){
    	//Création de la fenêtre.
    	this.setTitle("Logiciel");
    	this.setSize(800, 500);
    	this.setResizable(false);
    	this.setLocationRelativeTo(null);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		//Redimension de la box.
    		panneauBouton.setPreferredSize(new Dimension(360, 400));
     
    		// Redimension des boutons.
    		btn1.setMaximumSize(new Dimension(200, 30));
    		btn1.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    		btn2.setMaximumSize(new Dimension(200, 30));
    		btn2.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    		btn3.setMaximumSize(new Dimension(200, 30));
    		btn3.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    		//Position du JPanel
    		jpl.setBounds(20, 20, 360, 400);
     
    		//Ajout des JPanel dans le conteneur
    		container.add(jpl);
    		container.setLayout(new BorderLayout());
    		container.add(pan, BorderLayout.CENTER);
     
    		this.setContentPane(container);
     
    		this.initMenu();
     
    	}
     
    	private void initMenu(){
    		//Menu ficher
    		ficher.add(quitter);
    		//Pour quitter l'application
    		quitter.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){
    				System.exit(0);
    	}
    		});
     
    		ficher.add(quitter);
     
    		//Menu À propos
    		aPropos.add(aProposItem);
     
    		//Ajout des menus dans la barre de menus
    		menuBar.add(ficher);
    		menuBar.add(aPropos);
     
    		//Ajout de la barre de menus sur la fenêtre
    		this.setJMenuBar(menuBar);
     
    		panneauBouton.add(Box.createVerticalStrut(125));
    		panneauBouton.add(btn1);
    		panneauBouton.add(Box.createVerticalStrut(25));
    		panneauBouton.add(btn2);
    		panneauBouton.add(Box.createVerticalStrut(25));
    		panneauBouton.add(btn3);
     
    		jpl.add(panneauBouton, BorderLayout.WEST);
     
     
     
    		//On rend la fenêtre visible.
    		this.setVisible(true);
     
    	}
     
    }
    panneau

    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
     
    package logiciel_fenetre;
     
     
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Panneau extends JPanel{
    	public void paintComponent(Graphics g){		
    		g.drawRect(400, 20, 360, 400);
     
     
    	}
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour déclencher du code sur appui d'un bouton, on utilise :

    • soit un ActionListener sur le bouton
    • soit une Action sur le bouton


    Donc pour ouvrir un JFileChooser sur appui du bouton btn1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    btn1.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
                   JFileChooser fileChooser = new JFileChooser(); // inutile de déclarer la variable jfc comme membre de la classe
                   if ( fileChooser.showOpenDialog(Fentre.this) == JFileChooser.APPROVE_OPTION ) {
                         // ici faire le traitement de sélection de fichier
                   }
         }
    });
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonsoir Joël, Merci de m'avoir répondu rapidement. Je vais inclure cette partie de code dans mon programme.

  4. #4
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonsoir Joël,
    J'ai inséré le code que tu m'as donné, il fonctionne mais (il y a toujours un mais avec moi). Je t'explique: j'exécute le programme et une boite de dialogue s'ouvre. Oups? Je ferme cette boite de dialogue et apparaît la fenêtre principale du projet.
    Je clique sur le bouton de la fenêtre et la boite de dialogue s'ouvre à nouveau. peut-tu m'expliquer cette apparition(la première boite) ? J'ai ajouté aussi un FileFilter images au programme.
    Je remets les codes.

    PS: problèmes messagerie, me renvoi sur la page de connections lorsque j'expédie une réponse à un post (3 fois de suite).

    main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package Logiciel;
     
    import logiciel_fenetre.Fenetre;
     
    public class Main {
     
    	public static void main(String[] args) {
     
    		new Fenetre ();
    	}
     
    }
    fenetre
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    package logiciel_fenetre;
     
    /**
     * @Author Pascal DV
     * Version 1
     * Logiciel OCR et de garde de mise en page.
     */
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
     
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.filechooser.FileNameExtensionFilter;
     
    @SuppressWarnings("serial")
    public class Fenetre extends JFrame{
     
    	public static final String newline = null;
     
    	//Création d'un panneau pour insérer un graphique.
    	private Panneau pan = new Panneau();
     
    	//Création d'un conteneur.
    	private JPanel container = new JPanel();
     
    	//Ajout d'un JPanel pour inclure la box afin de la positionner.
    	private JPanel jpl = new JPanel();
     
    	//Creation de boutons.
    	private JButton btn1 = new JButton("Ouvrir");
    	private JButton btn2 = new JButton("Copier");
    	private JButton btn3 = new JButton("Effacer");
     
    	//Création d'une box pour positionner nos boutons verticalement.
    	Box panneauBouton = Box.createVerticalBox();
     
    	//Création d'un sélecteur de ficher.
    	private JFileChooser jfc = new JFileChooser();
    		int returnval = jfc.showOpenDialog(btn1);
     
    	//Ajout d'une barre de menu.
    	private JMenuBar menuBar = new JMenuBar();
     
    	//Ajout d'un menu.
    	private JMenu ficher = new JMenu("Ficher"),
    			aPropos = new JMenu("À propos");
     
    	private JMenuItem quitter = new JMenuItem("Quitter"),
    			aProposItem = new JMenuItem("Lisez-moi");	
     
    	public Fenetre(){
    	//Création de la fenêtre.
    	this.setTitle("Logiciel");
    	this.setSize(800, 500);
    	this.setResizable(false);
    	this.setLocationRelativeTo(null);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	//On rend la fenêtre visible.
    	this.setVisible(true);
     
    		//Redimension de la box.
    		panneauBouton.setPreferredSize(new Dimension(360, 400));
     
    		// Redimension des boutons.
    		btn1.setMaximumSize(new Dimension(200, 30));
    		btn1.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    		btn2.setMaximumSize(new Dimension(200, 30));
    		btn2.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    		btn3.setMaximumSize(new Dimension(200, 30));
    		btn3.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    		//Position du JPanel
    		jpl.setBounds(20, 20, 360, 400);
     
    		//Ajout des JPanel dans le conteneur
    		container.add(jpl);
    		container.setLayout(new BorderLayout());
    		container.add(pan, BorderLayout.CENTER);
     
    		this.setContentPane(container);
     
    		this.initMenu();
     
    	}
     
    	private void initMenu(){
    		//Menu ficher
    		ficher.add(quitter);
    		//Pour quitter l'application
    		quitter.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){
    				System.exit(0);
    	}
    });
     
    		ficher.add(quitter);
     
    		//Menu À propos
    		aPropos.add(aProposItem);
     
    		//Ajout des menus dans la barre de menus
    		menuBar.add(ficher);
    		menuBar.add(aPropos);
     
    		//Ajout de la barre de menus sur la fenêtre
    		this.setJMenuBar(menuBar);
     
    		panneauBouton.add(Box.createVerticalStrut(125));
    		panneauBouton.add(btn1);
    		panneauBouton.add(Box.createVerticalStrut(25));
    		panneauBouton.add(btn2);
    		panneauBouton.add(Box.createVerticalStrut(25));
    		panneauBouton.add(btn3);
     
    		jpl.add(panneauBouton, BorderLayout.WEST);
     
    		btn1.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				showOpenFileDialog();
    		}
    	});
    }
     
    	private void showOpenFileDialog() {
    		JFileChooser fileChooser = new JFileChooser();
            fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
            fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
            fileChooser.setAcceptAllFileFilterUsed(true);
            int result = fileChooser.showOpenDialog(this);
            if (result == JFileChooser.APPROVE_OPTION) {
                File selectedFile = fileChooser.getSelectedFile();
                System.out.println("Selected file: " + selectedFile.getAbsolutePath());
            }
        }
    }
    panneau
    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
     
    package logiciel_fenetre;
     
     
    import java.awt.Graphics;
    import java.awt.Image;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Panneau extends JPanel{
    	public void paintComponent(Graphics g){	
    		super.paintComponent(g);
    		g.drawRect(400, 20, 360, 400);
    		Image img = null;
    		g.drawImage(img, 360, 380, this);
     
     
    	}
    }
    extensionFichier
    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
     
    package logiciel_fenetre;
     
    import java.io.File;
     
    import javax.swing.filechooser.FileFilter;
     
    public abstract class ExtensionFichier extends FileFilter {
    	 private String extension;
    	 private String description;
     
    	 public ExtensionFichier(String extension, String description) {
    	        this.extension = extension;
    	        this.description = description;
    	    }
     
    	 public boolean accept(File file) {
    	        if (file.isDirectory()) {
    	            return true;
    	        }
    	        return file.getName().endsWith(extension);
    	 }
     
    	 public String getDescription() {
    	        return description + String.format(" (*%s)", extension);
    	 }
    }
    merci pour les réponses.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le JFileChooser qui s'ouvre à la création de la fenêtre est celui qui est ouvert dans les déclarations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Création d'un sélecteur de ficher.
    private JFileChooser jfc = new JFileChooser();
    int returnval = jfc.showOpenDialog(btn1);
    Enlève déjà ce qui surligné.

    Par ailleurs, la variable jfc n'a pas besoin d'être déclarée ici : déclare-là là où elle est utilisée comme dans mon exemple d'ActionListener, où elle est déclarée juste avant l'ouverture, localement à la méthode actionPerformed). Donc tu peux enlever les deux lignes ci-dessus.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Merci pour la réponse et modifier le code. Mais j'ai un problème avec le pc. Message erreur: critical_process_died.
    Donc je vais tâcher de régler le problème.
    A+

  7. #7
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonjour Joël,

    J'ai modifié le code et c'est super, j'obtiens exactement ce que j'imaginais. Encore merci pour nous de consacré de ton temps , nous les débutants. Problèmes pc réglé (port sata hs).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/10/2009, 16h13
  2. [Débutant] Ouvrir une boite de dialogue pour enregistrer un fichier
    Par pompier21 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 09/10/2008, 10h09
  3. impossible d'ouvrir une boite de dialogue
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/02/2008, 15h38
  4. Réponses: 10
    Dernier message: 25/10/2007, 14h40
  5. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59

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