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 :

Problème de positionnement de mes composants


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut Problème de positionnement de mes composants
    Bonjour,
    Alors voilà mon problème c'est que j'arrive pas à positionner mes composants comme je le souhaite!
    voici mon code :
    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
    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
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
     
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    public class FenetreSaisie extends JFrame{
    	private static final Component Label1 = null;
    	private static final Component Label2 = null;
    	private static final Component Label3 = null;
    	private JTextField textField;
    	private JTextField textField2;
    	private JTextField textField3;
    	private JTextField textField4;
    	private Container pane1;
    	private JLabel label;
     
    	public FenetreSaisie(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("Fenêtre qui demande du texte"); //On donne un titre à l'application
    		setSize(800,600); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
    	private JPanel buildContentPane(){
    		// Instance de JPanel
    		JPanel panel = new JPanel();
    		JPanel panel2 = new JPanel();
    		JPanel panel3 = new JPanel();
     
    		// Méthode setLayout
    		panel.setLayout(new FlowLayout());  //On définit le layout à utiliser sur le content pane
     
    		// Demander du texte à l'utilisateur
     
    		textField = new JTextField("1er champs"); // Création champs pour user1
    		textField.setColumns(8);
    		panel.add(textField);
     
    		textField2 = new JTextField("2ème champs"); // Création champs pour user2	
    		textField2.setColumns(8);
    		panel.add(textField2);
     
    		textField3 = new JTextField("3ème champs"); // Création champs pour user3
    		textField3.setColumns(8);
    		panel.add(textField3);
     
    		textField4 = new JTextField("4ème champs"); // Création champs pour user4	
    		textField4.setColumns(8);
    		panel.add(textField4);
     
    		// Afficher du texte dans la fenetre 
     
    		JLabel label = new JLabel("Zone de début");
    		panel.add(label);
     
    		JLabel label1 = new JLabel("Zone de fin");
    		panel.add(label1);
     
    		JLabel label2 = new JLabel("Valeur de début");
    		panel.add(label2);
     
    		JLabel label3 = new JLabel("Valeur de fin");
    		panel.add(label3);
     
     
    		// Afficher boutons 
     
    		JButton bouton1 = new JButton("PARCOURIR"); // Je créer bouton
    		panel.add(bouton1);
     
    		JButton bouton2 = new JButton("OK"); // Je créer bouton2
    		panel.add(bouton2);
     
    		JButton bouton3 = new JButton("ANNULER"); // Je créer bouton3
    		panel.add(bouton3);
     
    		return panel;
     
    	}
     
     
    	public JTextField getTextField(){
    		return textField;
    	}
     
    	public JLabel getLabel(){
    		return label;
    	}
     
     
     
    	public static void main(String[] args) {
    		//On crée une nouvelle instance de notre FenetreTexte
    		FenetreSaisie fenetre = new FenetreSaisie();
    		fenetre.setVisible(true);//On la rend visible
    	}
    }
    En output j'aimerai bien avoir ce résultat :

    Nom : fenetre.png
Affichages : 808
Taille : 10,0 Ko

    => J'ai beau essayer la méthode des Layout mais je n'y arrive pas...ensuite je suis passer à la méthode cardinal mais lorsque je mets le layout de mon panel à null, il y a des composants qui disparaissent ... sa me laisse perplexe!!

    Help please

  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,

    Tu utilises un FlowLayout, qui enfile les composants les uns derrières les autres, en passant à la ligne lorsque la ligne de composant dépasse la preferredWidth du container. Le FlowLayout n'est vraiment pas adapté à la présentation de ton formulaire.

    Premièrement, si tu ne veux pas trop de prendre là tête avec ces histoires, tu peux utiliser un plugin dans Eclipse (WindowBuilder) ou la palette dans NetBeans (ou je ne sais quoi dans IntellijIdea). Personnellement, je ne suis pas fan de ce genre d'outils, en partie parce qu'ils ne permettent pas d'apprendre, mais ils ont l'avantage d'être visuels donc de pas mal aider les débutants.

    Celà dit, sur le principe, lorsqu'on fait une interface, il faut connaitre les différents LayoutManager de base, et leur comportement : ensuite, il faut découper son interface en zones (chaque zone correspondant à un JPanel avec son propre LayoutManager) pour utiliser les différents composants et LayoutManager afin d'arriver au résultat. Parce qu'il y a 3 grandes catégories de LayoutManager de base :

    • Les grilles : GridLayout, GridBagLayout, mais aussi BoxLayout, qui sont en quelques sortent des grilles à 1 ligne ou 1 colonne, et le RowLayout
      Avec 2 spéciaux :
      • le SpringLayout, qui met en place des liens entre composant (un composant est à droite d'un autre, ou en dessous d'un autre...)
      • le GroupLayout, qui permet en plus d'avoir des hiérarchies


      Ces 2 derniers étant assez compliqués à mettre en œuvre pour un débutant
    • BorderLayout, qui est un Layout qui permet de définir un layout type dialogue : un zone au centre pour le formulaire, une banière en haut, une zone au sud, pour des boutons par exemple, et des zones latérales
    • Les autres, un peu hors-catégorie :
      • FlowLayout : chaque nouveau composant est relatif au précédent (on utilise ça par exemple pour une barre de boutons)
      • CardLayout : un seul composant visible à la fois, parmi différents composants
      • OverlayLayout : un composant au dessus d'un autre, visible aussi




    Le GridBagLayout devrait convenir à ton formulaire mais il n'est pas évident à utiliser pour un débutant.
    A noter que pour les formulaires, il existe une bibliothèque appelée JGoodies avec un layout manager, le FormLayout qui simplifie le layouting de Formulaire à champ.

    Pour voir ce que donne chaque LayoutManager :
    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 du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Salut Joel

    Tu utilises un FlowLayout, qui enfile les composants les uns derrières les autres, en passant à la ligne lorsque la ligne de composant dépasse la preferredWidth du container. Le FlowLayout n'est vraiment pas adapté à la présentation de ton formulaire.
    Exactement, tu me la fait remarqué...

    Premièrement, si tu ne veux pas trop de prendre là tête avec ces histoires, tu peux utiliser un plugin dans Eclipse (WindowBuilder) ou la palette dans NetBeans (ou je ne sais quoi dans IntellijIdea). Personnellement, je ne suis pas fan de ce genre d'outils, en partie parce qu'ils ne permettent pas d'apprendre, mais ils ont l'avantage d'être visuels donc de pas mal aider les débutants.
    => Comment utilise t-on le windowBuilder sur eclipse stp
    j'ai fais window => preference => windowBuilder => Swing => Layout => GridBagLayout mais ensuite je ne sais pas quoi faire.
    Celà dit, sur le principe, lorsqu'on fait une interface, il faut connaitre les différents LayoutManager de base, et leur comportement : ensuite, il faut découper son interface en zones (chaque zone correspondant à un JPanel avec son propre LayoutManager) pour utiliser les différents composants et LayoutManager afin d'arriver au résultat. Parce qu'il y a 3 grandes catégories de LayoutManager de base :
    => Je créer trois panels :
    1 panel pour les boutons, le 2eme pour les textFields et le 3eme pour les labels nan ?

    Une dernière question comment appelle t-on le rectangle en haut à gauche? stp , en faite je vais cliquer sur parcourir et ensuite un fichier choisi sera stocké sur le rectangle

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Comment utilise t-on le windowBuilder sur eclipse stp
    j'ai fais window => preference => windowBuilder => Swing => Layout => GridBagLayout mais ensuite je ne sais pas quoi faire.
    J'ai trouver, en faite on clique droit sur notre classe ensuite => open with => WindowBuilder Editor.

    Le plus dur c'est la suite..

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Re
    J'ai trouver ( ENFIN ) la réponse j'ai suivi ce tuto qui est très interressant pour tous ceux qui savent pas utilisé WindowBuilder =>
    http://isn.mgz.free.fr/fichiers_pdf/TDfondEcran.pdf

    Du coup mes seules questions qui me reste sont :
    1/ comment s'appelle le composant que je dois mettre sur la même ligne que parcourir ? en effet lorsque je clique sur parcourir je dois pouvoir avoir une autre page qui s'ouvre et qui me propose de choisir un fichier.
    2/ Quels action mettre à mes 3 boutons?

    thinks

    Nom : interface2.png
Affichages : 646
Taille : 1,57 Mo

  6. #6
    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 composant à gauche du bouton parcourir est simplement un JTextField.
    Quant au bouton, il va ouvrir un JFileChooser pour choisir le nom du fichier, et que tu n'auras plus qu'à mettre toi même dans le champ texte.

    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
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.FileFilter;
     
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;
    import javax.swing.JTextField;
     
     
    public class ExempleBrowseFile extends JPanel {
     
    	private JTextField textField;
    	private JButton button;
     
     
    	public ExempleBrowseFile(boolean fieldLocked) {
    		super(new GridBagLayout());
    		textField = new JTextField();
    		add(textField, new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 0, 0));
    		button = new JButton("Parcourir");
    		add(button, new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.BASELINE_LEADING, GridBagConstraints.NONE, new Insets(2, 2, 2, 2), 0, 0));
     
    		button.addActionListener(new ActionListener() {
     
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				browseFile();
    			}
     
     
    		});
     
    		if ( fieldLocked ) {
    			textField.setEditable(false); 
    		}
     
    	}
     
    	private void browseFile() {
    		JFileChooser fileChooser = new JFileChooser();
    		fileChooser.setDialogTitle("Choisir le fichier...");
    		fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    		fileChooser.setMultiSelectionEnabled(false);
    		if ( !textField.getText().isEmpty() ) {
    			fileChooser.setSelectedFile(new File(textField.getText()));
    		}
    		// il y a plein d'autres méthodes pour customiser le composant (filtre sur les fichiers par exemple) : voir doc.
    		if ( fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION ) { 
    			textField.setText(  fileChooser.getSelectedFile().getAbsolutePath().toString() );
    		}
    	}
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
     
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		frame.getContentPane().add( new ExempleBrowseFile(false) );
     
    		frame.setSize(400,100);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    }
    Pour les autres boutons :

    • Ok : va lire les valeurs dans les différents champs et lance la méthode de traitement (pour lire : JTextField.getText()).
    • Annuler : ça dépend de ce que tu veux faire (si c'est juste quitter l'application, ou revenir à un écran d'accueil)
    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.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    D'accord Joel !

    J'ai réussi avec un peu de peine à faire ce que je veux c'est a dire créer ma première page de l'IHM :

    Tiens voici le code que j'ai fait ( enfin qui s'est fait automatiquement car j'ai utilisé WindowBuilder) :

    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
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.border.EmptyBorder;
     
     
    public class FenetreSaisie extends JFrame {
     
    	private JPanel contentPane;
    	private JTextField textField;
    	private JTextField textField_1;
    	private JTextField textField_2;
    	private JTextField textField_3;
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
     
    				try {
    					simplefenetre frame = new simplefenetre();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	/**
             * Create the frame.
             */
    	public FenetreSaisie() {
     
    		// On créer un groupe de boutons .
    		ButtonGroup groupeDeBoutons = new ButtonGroup(); 
     
     
    		setTitle("Traiter vos fichiers");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
     
     
     
    		JButton btnOk = new JButton("OK");
    		// mise en relation du bouton ok avec les deux autres
    		groupeDeBoutons.add(btnOk);
    		btnOk.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
     
    			}
    		});
    		btnOk.setBounds(243, 228, 58, 23);
    		contentPane.add(btnOk);
     
     
     
    		JButton btnParcourir = new JButton("PARCOURIR");
    		btnParcourir.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
     
    				//Create a file chooser
    				final JFileChooser fc = new JFileChooser();
    				//In response to a button PARCOURIR:
    				int returnVal = fc.showOpenDialog(contentPane);
    			}
    		});
    		// mise en relation du bouton PARCOURIR avec les deux autres
    				groupeDeBoutons.add(btnParcourir);
    		btnParcourir.setBounds(304, 56, 120, 23);
    		contentPane.add(btnParcourir);
     
    		JButton btnAnnuler = new JButton("ANNULER");
    		btnAnnuler.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
     
    			}
    		});
    		// mise en relation du bouton ANNULER avec les deux autres
    		groupeDeBoutons.add(btnAnnuler);
    		btnAnnuler.setBounds(311, 228, 113, 23);
    		contentPane.add(btnAnnuler);
     
    		textField = new JTextField();
    		textField.setBounds(116, 112, 86, 20);
    		contentPane.add(textField);
    		textField.setColumns(10);
     
    		textField_1 = new JTextField();
    		textField_1.setBounds(116, 207, 86, 20);
    		contentPane.add(textField_1);
    		textField_1.setColumns(10);
     
    		textField_2 = new JTextField();
    		textField_2.setBounds(116, 145, 86, 20);
    		contentPane.add(textField_2);
    		textField_2.setColumns(10);
     
    		textField_3 = new JTextField();
    		textField_3.setBounds(116, 176, 86, 20);
    		contentPane.add(textField_3);
    		textField_3.setColumns(10);
     
    		JLabel lblNewLabel = new JLabel("Valeur de d\u00E9but");
    		lblNewLabel.setBounds(10, 179, 86, 14);
    		contentPane.add(lblNewLabel);
     
    		JLabel lblNewLabel_1 = new JLabel("Zone de d\u00E9but ");
    		lblNewLabel_1.setBounds(10, 115, 73, 14);
    		contentPane.add(lblNewLabel_1);
     
    		JLabel lblNewLabel_2 = new JLabel("Valeur de fin");
    		lblNewLabel_2.setBounds(10, 210, 73, 14);
    		contentPane.add(lblNewLabel_2);
     
    		JLabel lblNewLabel_3 = new JLabel("Zone de fin");
    		lblNewLabel_3.setBounds(10, 148, 73, 14);
    		contentPane.add(lblNewLabel_3);
     
     
     
     
     
    	}
    Dis moi je rajoute tout ce code ci dessus dans mon code pour pouvoir avoir le JtextField ou juste une partie ? sa me paraît balaise comme même

    Donc :
    1/ quand je clique sur le boutton parcourir j'ai bien une fenêtre de recherche qui apparaît => ok
    2/ A quoi va me servir le boutton OK ?> va lire les valeurs dans les différents champs et lance la méthode de traitement (pour lire : JTextField.getText()).
    3/ A quoi va me servir le boutton ANNULER ? => ça dépend de ce que tu veux faire (si c'est juste quitter l'application, ou revenir à un écran d'accueil)

    Ai-je fini ?

    Voilà les questions que je me pose !!

  8. #8
    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
    Citation Envoyé par khalous91 Voir le message
    Dis moi je rajoute tout ce code ci dessus dans mon code pour pouvoir avoir le JtextField ou juste une partie ? sa me paraît balaise comme même
    Bah, non pas tel quel. C'est pour le principe. Dans ton formulaire tu ajoutes juste un JTextField au bon endroit dans le formulaire et tu utilises le bouton "parcourir" que tu as déjà mis (tu peux reprendre le code de la méthode browseFile() et l'adapter à ta sauce (pour le paramétrage du JFileChooser, comme par exemple, peut-être ajouter un filtre pour ne voir que certains fichiers). Il te faut juste brancher l'appel sur ton bouton avec (comme tu as déjà plus ou moins fait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    btnParcourir.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    Citation Envoyé par khalous91 Voir le message
    Donc :
    1/ quand je clique sur le boutton parcourir j'ai bien une fenêtre de recherche qui apparaît => ok
    OK

    Citation Envoyé par khalous91 Voir le message
    2/ A quoi va me servir le boutton OK ?> va lire les valeurs dans les différents champs et lance la méthode de traitement (pour lire : JTextField.getText()).
    Les valeurs que tu vas lire dans les 4 champs, ça correspond à ce qu'on avait mis en static final dans le code de l'autre discussion (les ZONE_B, ZONE_E, tout ça)... le mieux est de transformer ton code pour qu'au lieu d'appeler ces constantes, tu les passes en paramètres d'une méthode par exemple (plus bourrain, ce serait simplement enlever le final, ce qui te permettrait de les modifier directement par affectation).

    Citation Envoyé par khalous91 Voir le message
    3/ A quoi va me servir le boutton ANNULER ? => ça dépend de ce que tu veux faire (si c'est juste quitter l'application, ou revenir à un écran d'accueil)

    Ai-je fini ?

    Voilà les questions que je me pose !!
    Bah, la trois, c'est plutôt moi qui pose la question : je ne peux pas savoir ce que tu veux faire.
    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.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Les valeurs que tu vas lire dans les 4 champs, ça correspond à ce qu'on avait mis en static final dans le code de l'autre discussion (les ZONE_B, ZONE_E, tout ça)... le mieux est de transformer ton code pour qu'au lieu d'appeler ces constantes, tu les passes en paramètres d'une méthode par exemple (plus bourrain, ce serait simplement enlever le final, ce qui te permettrait de les modifier directement par affectation).
    => Oui c'est ça lorsque je vais remplir mes 4 zones en cliquant sur OK sa va me délimiter les zones de mon fichier choisi ( grace au boutton parcourir )
    et le boutton ANNULER servira a fermer la fenêtre entiere comme si je cliqué sur la croix rouge.

    Enfin je pense qu'on sais compris lol

    Tu penses que je peux me fixer comme but finir tout sa pour vendredi au plus tard ?
    c'est faisable pour mon niveau?

    PS : je devrai importer mon code java qu'on avait fait ensemble! je pense que sa ne doit pas être compliqué!

  10. #10
    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
    Citation Envoyé par khalous91 Voir le message
    => Oui c'est ça lorsque je vais remplir mes 4 zones en cliquant sur OK sa va me délimiter les zones de mon fichier choisi ( grace au boutton parcourir )
    et le boutton ANNULER servira a fermer la fenêtre entiere comme si je cliqué sur la croix rouge.

    Enfin je pense qu'on sais compris lol

    Tu penses que je peux me fixer comme but finir tout sa pour vendredi au plus tard ?
    c'est faisable pour mon niveau?
    Moi, je dirais que pour faire le 2 et le 3, dans 20 minutes ça devrait être terminé, grand max (et je compte la pause clope ).
    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.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Moi, je dirais que pour faire le 2 et le 3, dans 20 minutes ça devrait être terminé, grand max (et je compte la pause clope ).
    LOL pour toi oui!
    laisse moi jusqu'a 16h10 top chrono c'est parti !!

  12. #12
    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
    Citation Envoyé par khalous91 Voir le message
    LOL pour toi oui!
    laisse moi jusqu'a 16h10 top chrono c'est parti !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    btnOK.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     
            // la on met le code du bouton (c'est le même principe pour tous les boutons)
     
    }
    }
    Pour quitter l'application, System.exit(0); : c'est violent, mais vu ton programme, il n'y a pas à faire plus compliqué.

    Donc, pour lancer le programme que tu as fait l'autre jour, il faut collecter dans 5 variables le contenu des 5 champs :

    • une variable pour ZONE_B
    • une pour ZONE_E
    • une pour VALEUR_B
    • une pour VALEUR_E
    • une pour le nom du fichier (je ne sais plus comment elle s'appelait)


    Voilà le code pour le champ ZONE_B (je suppose) dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    textField = new JTextField("1er champs"); // Création champs pour user1
    		textField.setColumns(8);
    		panel.add(textField);
    Déjà, change moi ce label, pour que çà veule dire quelque chose ("1er champ ça veut rien dire) : par exemple, ZONE_B, ou Début de zone, par exemple.

    Ensuite, donc pour lire la valeur de ce champ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String zoneE = textField.getText();
    A mettre dans actionPerformed() du bouton btnOK.

    Pareil pour les autres champs.

    Ensuite, il te faut appeler une méthode de classe de l'autre jour en passant ces valeurs de manière à ce que ce ne soit plus les constantes qui soient utilisées mais ces valeurs.
    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.

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    btnOK.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     
            // la on met le code du bouton (c'est le même principe pour tous les boutons)
     
    }
    }
    C'est noté ! sa sortira plus de ma tête


    System.exit(0);
    => Enorme !! comme ça c'est fait !lol

    Déjà, change moi ce label, pour que çà veule dire quelque chose ("1er champ ça veut rien dire) : par exemple, ZONE_B, ou Début de zone, par exemple.
    Sayai, comme ça je reste dans le contexte du code précédent!


    Donc, pour lancer le programme que tu as fait l'autre jour, il faut collecter dans 5 variables le contenu des 5 champs :

    une variable pour ZONE_B
    une pour ZONE_E
    une pour VALEUR_B
    une pour VALEUR_E
    une pour le nom du fichier (je ne sais plus comment elle s'appelait)
    je recréer des nouvelles Variable ? car dans mon code je l'ai ai deja créer :
    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
     
    textField = new JTextField();
    		textField.setBounds(116, 112, 86, 20);
    		contentPane.add(textField);
    		textField.setColumns(10);
     
    		textField_1 = new JTextField();
    		textField_1.setBounds(116, 207, 86, 20);
    		contentPane.add(textField_1);
    		textField_1.setColumns(10);
     
    		textField_2 = new JTextField();
    		textField_2.setBounds(116, 145, 86, 20);
    		contentPane.add(textField_2);
    		textField_2.setColumns(10);
     
    		textField_3 = new JTextField();
    		textField_3.setBounds(116, 176, 86, 20);
    		contentPane.add(textField_3);
    		textField_3.setColumns(10);
    Ensuite, il te faut appeler une méthode de classe de l'autre jour en passant ces valeurs de manière à ce que ce ne soit plus les constantes qui soient utilisées mais ces valeurs.
    Là j'importe mon code de la dernière fois en gros ?

  14. #14
    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
    Citation Envoyé par khalous91 Voir le message
    je recréer des nouvelles Variable ? car dans mon code je l'ai ai deja créer :
    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
     
    textField = new JTextField();
    		textField.setBounds(116, 112, 86, 20);
    		contentPane.add(textField);
    		textField.setColumns(10);
     
    		textField_1 = new JTextField();
    		textField_1.setBounds(116, 207, 86, 20);
    		contentPane.add(textField_1);
    		textField_1.setColumns(10);
     
    		textField_2 = new JTextField();
    		textField_2.setBounds(116, 145, 86, 20);
    		contentPane.add(textField_2);
    		textField_2.setColumns(10);
     
    		textField_3 = new JTextField();
    		textField_3.setBounds(116, 176, 86, 20);
    		contentPane.add(textField_3);
    		textField_3.setColumns(10);


    Là j'importe mon code de la dernière fois en gros ?
    Ces variables, ce sont les composants de saisie (les JTextField). Moi je parlais de nouvelles variables pour récupérer les valeurs saisies dans ces champs (on n'est pas obligé de passer par de nouvelles variables, mais c'est souvent plus clair et facile à comprendre pour les débutants de passer par des variables intermédiares).

    Donc c'est ce que je t'ai montré là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String zoneE = textField.getText();
    Pour lire le premier champs, donc tu dois écrire quelque chose de similaire pour lire la saisie dans textField_1, textField_3, textField_4, et le JTextField que tu as/Vas ajouté pour le nom du fichier.

    ça te fera 5 variables, qui correspondent aux valeurs que tu as mis en dur dans les 5 constantes de ton programme de l'autre jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private static final String ZONE_B = "#>";
    	private static final String ZONE_E = "#<";
    	private static final String VALUE_B = "{";
    	private static final String VALUE_E = "}";
    	private static final String PATH = "fichierCSH.txt";

    Ensuite tu n'importes pas le code de la dernière fois. Il est dans sa classe et il est très bien là où il se trouve. Sauf qu'il n'a pas été vraiment prévu pour être appelé depuis une autre classe, puisse que ses valeurs de fonctionnement sont en dur dans le code, sous forme de static final.
    Il faut appeler une méthode de cette classe, après avoir lu nos 5 champs (donc dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    btnOK.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     
            // on lit les 5 champs 
     
            // on appelle la méthode de l'autre classe...
     
    }
    }

    Comment faire pour utiliser les variables que tu as/vas récoltées depuis les champs de saisie. Il y a différents moyens plus ou moins propres. Normelement, on devrait remplacer les constantes par des variables, et supprimer toutes les méthodes static.

    Donc voici ce à quoi ressemble ton dernier code (j'ai mis que les signatures des méthodes, le contenu de la méthode main, et y'a pas les commentaires parce que tu les ajoutés après :

    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
    public class Finally {
     
    	private static final String ZONE_B = "#>";
    	private static final String ZONE_E = "#<";
    	private static final String VALUE_B = "{";
    	private static final String VALUE_E = "}";
    	private static final String PATH = "fichierCSH.txt";
     
    	public static void main(String[] args) {
     
    		String path;
    		if ( args.length>0 ) {
    			path = args[0];
    		}
    		else {
    			path = PATH;
    		}
     
    		String string = extract(path); 
     
    		if (string != null) {
    			Collection<String> mots = split(string); 
    			for (String mot : mots) {
    				System.out.println(mot);
    			}
     
    		} else {
     
    			System.out.println("Aucune chaine trouvée comprise entre " + ZONE_B
    					+ " et " + ZONE_E);
     
    		}
    	}
     
    	private static String extract(String filename) { 
     
    		 
    	}
     
    	private static Collection<String> split(String string) {
     
    		 
    	}
     
    }
    D'abord tu créés une nouvelle méthode, appelons là traiterFichier, avec 5 paramètres, puis tu y copies ce que j'ai surligné en jaune dans la méthode main(), en le supprimant de main, et tu supprimer les 2 mots static que j'ai surlignés.


    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
    public class Finally {
     
    	private static final String ZONE_B = "#>";
    	private static final String ZONE_E = "#<";
    	private static final String VALUE_B = "{";
    	private static final String VALUE_E = "}";
    	private static final String PATH = "fichierCSH.txt";
     
    	public static void main(String[] args) {
     
    		String path;
    		if ( args.length>0 ) {
    			path = args[0];
    		}
    		else {
    			path = PATH;
    		}
     
                    // ICI
    		
    	}
     
            public void traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
    
                  String string = extract(path); 
     
    		if (string != null) {
    			Collection<String> mots = split(string); 
    			for (String mot : mots) {
    				System.out.println(mot);
    			}
     
    		} else {
     
    			System.out.println("Aucune chaine trouvée comprise entre " + ZONE_B
    					+ " et " + ZONE_E);
     
    		}
    
            }
    
    	private String extract(String filename) { 
     
    		 
    	}
     
    	private Collection<String> split(String string) {
     
    		 
    	}
     
    }
    Tu peux voir que j'ai ajouter un truc surligné dans main() : tu le remplaces par new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);
    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
    public class Finally {
     
    	private static final String ZONE_B = "#>";
    	private static final String ZONE_E = "#<";
    	private static final String VALUE_B = "{";
    	private static final String VALUE_E = "}";
    	private static final String PATH = "fichierCSH.txt";
     
    	public static void main(String[] args) {
     
    		String path;
    		if ( args.length>0 ) {
    			path = args[0];
    		}
    		else {
    			path = PATH;
    		}
     
                   new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);
    		
    	}
     
            public void traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
    
                  String string = extract(path);
     
    		if (string != null) {
    			Collection<String> mots = split(string);
    			for (String mot : mots) {
    				System.out.println(mot);
    			}
     
    		} else {
     
    			System.out.println("Aucune chaine trouvée comprise entre " + ZONE_B
    					+ " et " + ZONE_E);
     
    		}
    
            }
    
    	private String extract(String filename) { 
     
    		 
    	}
     
    	private Collection<String> split(String string) {
     
    		 
    	}
     
    }
    Tu modifies la méthode extract(String filename), en extract(String filename, String ZONE_B, String ZONE_E) et split(String string) en split(String string, String VALUE_B, String VALUE_E).

    Tu modifies les appels de ces méthodes pour que ça correspondent (ce que j'ai surligné ci-avant) (et il faut aussi modifier un truc dans la troisième ligne surlignée)

    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
    public class Finally {
     
    	private static final String ZONE_B = "#>";
    	private static final String ZONE_E = "#<";
    	private static final String VALUE_B = "{";
    	private static final String VALUE_E = "}";
    	private static final String PATH = "fichierCSH.txt";
     
    	public static void main(String[] args) {
     
    		String path;
    		if ( args.length>0 ) {
    			path = args[0];
    		}
    		else {
    			path = PATH;
    		}
     
                   new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);
    		
    	}
     
            public void traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
    
                  String string = extract(path, zoneB, zoneE);
     
    		if (string != null) {
    			Collection<String> mots = split(string, valueB, valueE);
    			for (String mot : mots) {
    				System.out.println(mot);
    			}
     
    		} else {
     
    			System.out.println("Aucune chaine trouvée comprise entre " + zoneB
    					+ " et " + zoneE);
     
    		}
    
            }
    
    	private String extract(String filename, String ZONE_B, String ZONE_E) { 
    
                 // là y'a du code évidemment (celui qu'il y a déja dans ta version bien sûr - y'a pas eu de changement du tout sur ça)
     
    		 
    	}
     
    	private Collection<String> split(String string, String VALUE_B, String VALUE_E) {
     
                 // là y'a du code évidemment (celui qu'il y a déja dans ta version bien sûr - y'a pas eu de changement du tout sur ça)
    		 
    	}
     
    }
    Normalement, il faudrait soigner 2 ou 3 trucs pour être conforme aux conventions mais on va passer ça pour l'instant (normalement les variables locales devraient être en lowerCamelCase et pas en majuscules). on verra ça plus tard (ça se fait tout seul dans Eclipse).

    En tout cas, tu devrais voir où je peux en venir. Maintenant on peut continuer à appeler la classe directement en tant que programme comme on le faisait avant, mais on peut aussi l'appeler à part, dans une autre classe en lui passant des paramètres, exactement comme on le fait dans la méthode main (ce que j'ai surligné). Il s'agit donc de mettre ce code dans la méthode actionPerformed(ActionEvent) du bouton okBtn, juste après avoir lu les valeurs dans les champs !
    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.

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Salut

    Me revoilà

    Euh sa à l'air un petit peu confu ( peut être parce que c'est le matin lol)
    je vais essayer de traiter ça étape par étape !

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Alors j'ai suivi tes conseils et ça me donne sa :

    code de la classe Finnaly :

    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
    151
    152
    153
    154
    155
    156
    157
    158
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Collection;
    import java.util.LinkedHashSet;
     
    public class Finally {
     
     
    	private static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire
    	private static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire
    	private static final String VALUE_B = "{"; // le début d'un mot à extraire
    	private static final String VALUE_E = "}"; // la fin d'un mot à extraire
    	private static final String PATH = "fichierCSH.txt"; // le nom du fichier par défaut lu
     
    	/* On peut passer un paramètre à la méthode main() : 
    	 * le nom du fichier et  s'il n'est pas spécifiée, on utilise PATH. 
    	 * Cette méthode appelle d'abord extract() 
    	 * puis split() et affiche les mots distincts trouvés 
    	 */
     
    	public static void main(String[] args) {
     
    		String path;
    		if ( args.length>0 ) {
    			path = args[0];
    		}
    		else {
    			path = PATH;
    		}
     
                   new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);	
    	}
     
    	public void traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
     
            String string = extract(PATH, zoneB, zoneE);
     
    	if (string != null) {
    		Collection<String> mots = split(string, valueB, valueE);
    		for (String mot : mots) {
    			System.out.println(mot);
    		}
     
    	} else {
     
    		System.out.println("Aucune chaine trouvée comprise entre " + zoneB
    				+ " et " + zoneE);
    	}
     
    	}
     
    	/**
             * Lit le fichier spécifié et extrait la partie située entre ZONE_B et ZONE_E
             * @param filename nom du fichier
             * @return la chaîne extraite ou null si aucune chaîne trouvée, ou si le fichier n'existe pas
             */
     
    	private  String extract(String filename, String ZONE_B, String ZONE_E) { 
     
    		try {
     
    			StringBuilder stringBuilder = new StringBuilder();  
     
    			BufferedReader buff = new BufferedReader(new FileReader(filename));
     
    			try {
    				String line;
     
    				while ((line = buff.readLine()) != null) { 
    					stringBuilder.append(line);  
    					stringBuilder.append('\n');
    				}
    			} finally {
    				buff.close();
    			}
     
    			String toutLeFichier = stringBuilder.toString();  
     
    			int a = toutLeFichier.indexOf(ZONE_B);
    			int b = toutLeFichier.indexOf(ZONE_E);
     
    			if (a >= 0 && b >= 0) { 
    				return toutLeFichier.substring(a + ZONE_B.length(), b); 
    			}
     
    		}
     
    		catch( FileNotFoundException e) {
    			System.err.println("Fichier " + new File(filename).getAbsolutePath() + " introuvable"); 
    		}
    		catch (IOException ioe) {
    			System.err.println("Erreur --" + ioe.getMessage());
    			ioe.printStackTrace();
    		}
     
    		return null;
     
    	}
     
    	/**
             * Extrait de la chaîne spécifiée la liste, sans doublons, des mots situés entre VALUE_B et VALUE_E 
             * @param string la chaîne dont on doit extraire les mots
             * @return la liste de mots extraite
             */
     
     
    	private  Collection<String> split(String string, String VALUE_B, String VALUE_E) {
     
    		 Collection<String> mots = new LinkedHashSet<>();  
     
     
    		String[] tab = string.split("\n");
    		for (int i = 0; i < tab.length; i++) {  
     
    			//System.out.println(i + " : " + tab[i]);
     
    			int index1 = tab[i].indexOf(VALUE_B);  
    			while (index1 >= 0) {  
     
    				int index2 = tab[i].indexOf(VALUE_E, index1);  
    				if (index2 >= 0) {  
     
    					int index3 = tab[i].lastIndexOf("{", index2);  
    					if (index3 != index1) {  
    						System.err
    								.println("Problème dans le fichier : { non fermée en "
    										+ index1);
    					}
     
    					String x = tab[i].substring(index1 + 1, index2);  
     
    					mots.add(x);  
     
    				} else {
     
     
    					System.err
    							.println("Problème dans le fichier : { non fermée en "
    									+ index1);
    					break;  
     
    				}
     
    				index1 = tab[i].indexOf(VALUE_B, index2);  
     
    			} // fin de la boucle while
     
    		} // fin de la boucle for                                                                                                                                                                                                                                                                                            
     
    		return mots;
    	}
     
     
     
    }
    code de la classe simplefenetre :
    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
    151
    152
    153
    154
    155
    import java.awt.BorderLayout;
     
     
    public class simplefenetre extends JFrame {
     
    	private JPanel contentPane;
    	private static JTextField textField;
    	private static JTextField textField_1;
    	private static JTextField textField_2;
    	private static JTextField textField_3;
    	private JTextField textField_4;
     
     
     
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					simplefenetre frame = new simplefenetre();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	/* Le constructeur */
     
    	public simplefenetre() {
    		// On créer un groupe de boutons .
    		ButtonGroup groupeDeBoutons = new ButtonGroup(); 
     
     
    		setTitle("Traiter vos fichiers");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
     
    		// Button "OK"
    		JButton btnOk = new JButton("OK");
    		btnOk.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {	
    				// On lit les 5 champs 
     
    				String ZONE_B = textField.getText();
    				String ZONE_E = textField_1.getText();
    				String VALUE_B = textField_2.getText();
    				String VALUE_E = textField_3.getText();
    				String PATH = textField_4.getText();
     
    				// On appelle la méthode de l'autre classe 
     
    			}	
     
    		});
     
    		// mise en relation du bouton ok avec les deux autres
    		groupeDeBoutons.add(btnOk);
    		btnOk.setBounds(243, 228, 58, 23);
    		contentPane.add(btnOk);
     
    		// Button "PARCOURIR"
     
    		JButton btnParcourir = new JButton("PARCOURIR");
    		btnParcourir.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				browseFile();  // sert au bouton PARCOURIR d'aller chercher un fichier x 			
    			}
    		});
     
    		// mise en relation du bouton PARCOURIR avec les deux autres
    				groupeDeBoutons.add(btnParcourir);
    		btnParcourir.setBounds(304, 56, 120, 23);
    		contentPane.add(btnParcourir);
     
    		// Button "ANNULER"
     
    		JButton btnAnnuler = new JButton("ANNULER");
    		btnAnnuler.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
     
    		// mise en relation du bouton ANNULER avec les deux autres
    		groupeDeBoutons.add(btnAnnuler);
    		btnAnnuler.setBounds(311, 228, 113, 23);
    		contentPane.add(btnAnnuler);
     
    		// On créer les composants de saisies .
     
    		textField = new JTextField();
    		textField.setBounds(116, 112, 86, 20);
    		contentPane.add(textField);
    		textField.setColumns(10);
     
    		textField_1 = new JTextField();
    		textField_1.setBounds(116, 207, 86, 20);
    		contentPane.add(textField_1);
    		textField_1.setColumns(10);
     
    		textField_2 = new JTextField();
    		textField_2.setBounds(116, 145, 86, 20);
    		contentPane.add(textField_2);
    		textField_2.setColumns(10);
     
    		textField_3 = new JTextField();
    		textField_3.setBounds(116, 176, 86, 20);
    		contentPane.add(textField_3);
    		textField_3.setColumns(10);
     
    		JLabel lblNewLabel = new JLabel("VALUE_B ");
    		lblNewLabel.setBounds(10, 179, 86, 14);
    		contentPane.add(lblNewLabel);
     
    		JLabel lblNewLabel_1 = new JLabel("ZONE_B");
    		lblNewLabel_1.setBounds(10, 115, 73, 14);
    		contentPane.add(lblNewLabel_1);
     
    		JLabel lblNewLabel_2 = new JLabel("VALUE_E");
    		lblNewLabel_2.setBounds(10, 210, 73, 14);
    		contentPane.add(lblNewLabel_2);
     
    		JLabel lblNewLabel_3 = new JLabel("ZONE_E");
    		lblNewLabel_3.setBounds(10, 148, 73, 14);
    		contentPane.add(lblNewLabel_3);
     
    		textField_4 = new JTextField();
    		textField_4.setBounds(10, 57, 192, 20);
    		contentPane.add(textField_4);
    		textField_4.setColumns(10);
     
     
     
    	}
     
    	private void browseFile() {
    		JFileChooser fileChooser = new JFileChooser();
    		fileChooser.setDialogTitle("Choisir le fichier...");
    		fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    		fileChooser.setMultiSelectionEnabled(false);
    		if ( !textField_4.getText().isEmpty() ) { // faire bien attention : bien faire correspondre notre textField choisi, ici le textField_4
    			fileChooser.setSelectedFile(new File(textField.getText()));
    		}
    		// il y a plein d'autres méthodes pour customiser le composant (filtre sur les fichiers par exemple) : voir doc.
    		if ( fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION ) { 
    			textField_4.setText(  fileChooser.getSelectedFile().getAbsolutePath().toString() );
    		}
    	}
     
    }

    Je pense que ça peut être bon là nan? il faut juste que j'appelle la méthode de l'autre classe mais je ne sais pas quelle instruction mettre

  17. #17
    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
    Citation Envoyé par khalous91 Voir le message
    Je pense que ça peut être bon là nan? il faut juste que j'appelle la méthode de l'autre classe mais je ne sais pas quelle instruction mettre
    Exactement comme dans le main() :

    Citation Envoyé par joel.drigo Voir le message
    ... new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);
    Ou presque : il faut juste que tu mettes PATH au lieu de path (puisque tel est le nom de ta variable) : cette instruction fonctionne partout justement.


    Accessoirement : il y a des conventions d'écriture en Java. Entre autres :

    • Les nom de classe en UpperCamelCase
    • les noms de méthodes en lowerCamelCase
    • les noms de variable en lowerCamelCase
    • les noms de constantes en UPPER_CASE


    Tu peux changer ça en quasi un instant avec la fonction Refactor / Rename
    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.

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Quand j'ajoute l'instruction new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);[/B] dans le bouton OK
    eclipse ne reconnait pas la classe Finally !
    il me dit de la créer alors qu'elle existe déjà ....
    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
    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
    151
    152
    153
    154
    155
    import java.awt.BorderLayout;
    
    
    public class simplefenetre extends JFrame {
    
    	private JPanel contentPane;
    	private static JTextField textField;
    	private static JTextField textField_1;
    	private static JTextField textField_2;
    	private static JTextField textField_3;
    	private JTextField textField_4;
    	
    
    	
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					simplefenetre frame = new simplefenetre();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/* Le constructeur */
    	
    	public simplefenetre() {
    		// On créer un groupe de boutons .
    		ButtonGroup groupeDeBoutons = new ButtonGroup(); 
    		
    		
    		setTitle("Traiter vos fichiers");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		// Button "OK"
    		JButton btnOk = new JButton("OK");
    		btnOk.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {	
    				// On lit les 5 champs 
    				
    				String ZONE_B = textField.getText();
    				String ZONE_E = textField_1.getText();
    				String VALUE_B = textField_2.getText();
    				String VALUE_E = textField_3.getText();
    				String PATH = textField_4.getText();
    				
    				// On appelle la méthode de l'autre classe 
    				 new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);
    			}	
    			
    		});
    			
    		// mise en relation du bouton ok avec les deux autres
    		groupeDeBoutons.add(btnOk);
    		btnOk.setBounds(243, 228, 58, 23);
    		contentPane.add(btnOk);
    	
    		// Button "PARCOURIR"
    	
    		JButton btnParcourir = new JButton("PARCOURIR");
    		btnParcourir.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				browseFile();  // sert au bouton PARCOURIR d'aller chercher un fichier x 			
    			}
    		});
    		
    		// mise en relation du bouton PARCOURIR avec les deux autres
    				groupeDeBoutons.add(btnParcourir);
    		btnParcourir.setBounds(304, 56, 120, 23);
    		contentPane.add(btnParcourir);
    		
    		// Button "ANNULER"
    		
    		JButton btnAnnuler = new JButton("ANNULER");
    		btnAnnuler.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
    		
    		// mise en relation du bouton ANNULER avec les deux autres
    		groupeDeBoutons.add(btnAnnuler);
    		btnAnnuler.setBounds(311, 228, 113, 23);
    		contentPane.add(btnAnnuler);
    		
    		// On créer les composants de saisies .
    		
    		textField = new JTextField();
    		textField.setBounds(116, 112, 86, 20);
    		contentPane.add(textField);
    		textField.setColumns(10);
    		
    		textField_1 = new JTextField();
    		textField_1.setBounds(116, 207, 86, 20);
    		contentPane.add(textField_1);
    		textField_1.setColumns(10);
    		
    		textField_2 = new JTextField();
    		textField_2.setBounds(116, 145, 86, 20);
    		contentPane.add(textField_2);
    		textField_2.setColumns(10);
    		
    		textField_3 = new JTextField();
    		textField_3.setBounds(116, 176, 86, 20);
    		contentPane.add(textField_3);
    		textField_3.setColumns(10);
    		
    		JLabel lblNewLabel = new JLabel("VALUE_B ");
    		lblNewLabel.setBounds(10, 179, 86, 14);
    		contentPane.add(lblNewLabel);
    		
    		JLabel lblNewLabel_1 = new JLabel("ZONE_B");
    		lblNewLabel_1.setBounds(10, 115, 73, 14);
    		contentPane.add(lblNewLabel_1);
    		
    		JLabel lblNewLabel_2 = new JLabel("VALUE_E");
    		lblNewLabel_2.setBounds(10, 210, 73, 14);
    		contentPane.add(lblNewLabel_2);
    		
    		JLabel lblNewLabel_3 = new JLabel("ZONE_E");
    		lblNewLabel_3.setBounds(10, 148, 73, 14);
    		contentPane.add(lblNewLabel_3);
    		
    		textField_4 = new JTextField();
    		textField_4.setBounds(10, 57, 192, 20);
    		contentPane.add(textField_4);
    		textField_4.setColumns(10);
    		
    		
    		
    	}
    	
    	private void browseFile() {
    		JFileChooser fileChooser = new JFileChooser();
    		fileChooser.setDialogTitle("Choisir le fichier...");
    		fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    		fileChooser.setMultiSelectionEnabled(false);
    		if ( !textField_4.getText().isEmpty() ) { // faire bien attention : bien faire correspondre notre textField choisi, ici le textField_4
    			fileChooser.setSelectedFile(new File(textField.getText()));
    		}
    		// il y a plein d'autres méthodes pour customiser le composant (filtre sur les fichiers par exemple) : voir doc.
    		if ( fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION ) { 
    			textField_4.setText(  fileChooser.getSelectedFile().getAbsolutePath().toString() );
    		}
    	}
    	
    }

  19. #19
    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
    Tu as bien mis les 2 classes dans le même projet ? (Même package ça oui à priori)
    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.

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Tu as bien mis les 2 classes dans le même projet ? (Même package ça oui à priori)
    oui j'ai laissé le package par défaut.

Discussions similaires

  1. Problème positionnement de trois composants
    Par dark0502 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 29/06/2011, 09h24
  2. Réponses: 6
    Dernier message: 19/02/2008, 19h48
  3. Problème de placement de mes composants et layout
    Par mnemonic78 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/10/2007, 16h39
  4. Problème de positionnement avec mes DIV
    Par Rifton007 dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 23/01/2007, 10h48
  5. Réponses: 5
    Dernier message: 13/06/2006, 15h14

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