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

avec Java Discussion :

Besoin d'aide avec les textfield


Sujet :

avec Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Par défaut Besoin d'aide avec les textfield
    Salut à tous!
    Dans le cadre d'un projet à la fac, je dois réaliser un programme en JAVA visant a appliquer a une série de données la méthode des K Means.
    Je sollicite votre aide pour l'interface graphique. En effet, je génère aléatoirement N données avec une classe TabRandom(N) , qui prend donc le nombre de données a générer en argument.
    Dans l'interface graphique, j'aimerais faire la chose suivante:
    Un champ dans lequel on rentre le nombre de données a générer N, et un bouton générer, lancant la méthode TabRandom.

    La difficulté est la : comment récupérer le contenu du textfield pour le passer en argument dans le bouton générer?

    si c'est nécessaire, je vous poste le code plus tard, et si vous avez des liens vers des tutos clairs, n'hésitez pas!

    Merci d'avance
    Guillaume

  2. #2
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonjour,
    monTextField.getText() retourne le texte contenu dans le composant
    hérité de TextComponent

    voir http://docs.oracle.com/javase/7/docs....html#getText()

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Par défaut
    Ouais tu peux récupérer le contenu de ton JTextField grâce à ce que t'as posté kox.

    Par contre fait attention car tu vas peut-être récupérer un string, donc si tu veux un int, tu vas devoir faire Integer.valueOf(JTextField.getText())

  4. #4
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonjour,
    plutôt ce genre de chose si tu veux récupérer un int :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int val;
    try{
    	val=Integer.valueOf(monTextField.getText());
    }
    catch(NumberFormatException nfe){
    	val=0;
    }
    ou mieux, tu passes au JFormattedTextField au lieu de JTextField, ce qui va te permettre de forcer la saisie de nombres entiers :

    Pour le créer avec saisie d'entiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JFormattedTextField jtf=new JFormattedTextField(NumberFormat.getIntegerInstance());
    Pour récupérer un entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int val=(Integer) jtf.getValue();
    et pour en savoir plus : http://docs.oracle.com/javase/7/docs...TextField.html

  5. #5
    Membre confirmé
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Par défaut
    Merci pour votre aide, mais j'ai quand même du mal a récuperer la valeur ( je suis pas très a l'aise avec les interactions entre les différentes classes.
    Voici donc les codes des différentes classes:

    Ca c'est la classe de la fenêtre de menu
    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
    package Package1;
    import javax.swing.*;
    import javax.swing.text.JTextComponent;
     
    import java.awt.*;
    import java.awt.event.*;
     
     
    public class FenetrePrincipale extends JFrame implements ActionListener{
    	private JTextField textField;
    	private JLabel label;
    	String ch;
    	//Constructeur de la fenetre principale pour l'appeller dans la classe Principale
     
    	public FenetrePrincipale(){
    		super(); //recuperation des methodes et constructeurs de JFrame
    		build();//Initialisation de la fenetre
    	 }
     
    	private void build(){
    		setTitle("Outil de calcul Data Mining"); //Titre de la fenetre
    		setSize(500,200); //Taille de la fenetre
    		setLocationRelativeTo(null); //fenetre centree
    		setResizable(true); //fenetre redimensionnable
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    		//On dit a l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
    	private JPanel buildContentPane(){
     
    		JComboBox choixmethode; //initialisation de la variable liste deroulante
    		JTextField nbclusters; //initialisation de la zone de texte nbclusters
    		JTextField donneesrandom; //initialisation de la zone de texte donneesrandom
     
    		//Création de la fenetre
    		JPanel panel = new JPanel(); 
    		panel.setLayout(new GridLayout(6,2));
    		panel.setBackground(Color.lightGray);
     
    		//Création de la liste deroulante
    		JLabel labelcalcul = new JLabel("Méthode de calcul"); //texte
    		Object[] elements = new Object[]{"K-Means", "K-Medoïds"}; //liste déroulante
    		choixmethode = new JComboBox(elements);
     
    		//Création de la zone de texte nbclusters
    		JLabel labelcluster = new JLabel("Nombre de clusters"); //texte
    		nbclusters = new JTextField(); //zone de texte
     
    		//Création d'un bouton parcourir
    		JLabel labelimportation = new JLabel("Importation de données"); //texte
    		JButton parcourir = new JButton("Parcourir..."); //bouton parcourir
    		parcourir.addActionListener(this); //action du bouton parcourir
     
    		//Création de la zone de texte donneesrandom
    		JLabel labelrandom= new JLabel("Ou nombre de données aléatoirement générées"); //texte
    		donneesrandom = new JTextField(); //zone de texte
    		JButton generer = new JButton(new ActionGenerer(this, "Générer les données")); //bouton parcourir
     
    		//Création d'un bouton Executer
    		JButton executer = new JButton("Executer");
     
     
    		//Ajout la fenetre
    		panel.add(labelcalcul);
    		panel.add(choixmethode);
    		panel.add(labelcluster);
    		panel.add(nbclusters);
    		panel.add(labelimportation);
    		panel.add(parcourir);
    		panel.add(labelrandom);
    		panel.add(donneesrandom);
    		panel.add(generer);
    		panel.add(executer);
    		ch = donneesrandom.getText();
     
     
    		return panel;
    	}	
     
     
    	public void actionPerformed(ActionEvent e) { //action du bouton parcourir //xls ou csv
    		JFileChooser chemin = new JFileChooser();
            int returnVal = chemin.showOpenDialog(getParent());
            if(returnVal == JFileChooser.APPROVE_OPTION) {
               System.out.println("Fichier choisis :" +
                    chemin.getSelectedFile().getName());}
    	}
     
    }
    Ca c'est la classe de génération de nombres
    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
    package Package1;
     
    public class TabRandom{
     
    	 int tab [][];
    	 int nobs;
     
    	 public TabRandom(int nobs){
    		 this.nobs=nobs;
    		 tab=new int[this.nobs][2];
    	 }
     
    	 public void remplissage(){
    		 for(int i=0;i<tab.length;i++){
    			 tab[i][0]=(int) (Math.random()*100); //1ère colonne
    			 tab[i][1]=(int) (Math.random()*100); //2ème colonne
    			 }
    	 }
     
     
    	 public String affiche(){
    		 String res="";
    		 for(int i=0;i<nobs;i++){
    			 res = res + tab[i][0] + " " + tab[i][1] + "\n";
    		 }
    		 return res;
    	 }
     
     
     
    }
    Et ca c'est le bouton action "générer"
    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 Package1;
     
    import java.awt.event.*;
    import java.lang.*;
    import javax.swing.*;
     
    public class ActionGenerer extends AbstractAction {
     
     
    	private FenetrePrincipale fenetre;
    	String nobs;
     
    	public ActionGenerer(FenetrePrincipale fenetre, String texte){
    		super(texte);
    		this.fenetre = fenetre;
     
    	}
     
    	public void actionPerformed(ActionEvent e) { 
    		TabRandom tab=new TabRandom(50);
    		tab.remplissage();
    		System.out.println(tab.affiche());
     
     
    	}
     
    }
    Je n'arrive pas a récuperer la valeur rentrée dans le textfield et l'appliquer au bouton action!
    Merci de votre aide!
    Guillaume

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Par défaut
    Là si j'ai bien compris tu veux passer un nombre à ton bouton "générer" mais tu ne donnes qu'une fenêtre et un texte où tu as mis "Générer les données"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ActionGenerer(FenetrePrincipale fenetre, String texte){
    		super(texte);
    		this.fenetre = fenetre;
     
    	}
    C'est dans ce "texte" que tu veux lui donner l'entier N ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Par défaut
    Re!
    j'ai trouvé avec une méthode plus simple! au lieu de faire un bouton action, j'ai utilisé la technique actionlistenner au sein meme de la classe fenetreprincipale.
    Voici le 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
    package Package1;
    import javax.swing.*;
    import javax.swing.text.JTextComponent;
    import java.awt.*;
    import java.awt.event.*;
     
    public class FenetrePrincipale extends JFrame implements ActionListener{
     
    	JButton generer, parcourir,executer; 
    	JComboBox choixmethode;   //initialisation de la variable liste deroulante
    	JTextField nbclusters,donneesrandom; //initialisation de la zone de texte nbclusters et donneesrandom
    	JLabel labelcluster,labelcalcul,labelimportation,labelrandom;
     
     
     
    	public FenetrePrincipale(){
    		super(); //recuperation des methodes et constructeurs de JFrame
    		build();//Initialisation de la fenetre
    	 }
     
    	private void build(){
    		setTitle("Outil de calcul Data Mining"); //Titre de la fenetre
    		setSize(500,200); //Taille de la fenetre
    		setLocationRelativeTo(null); //fenetre centree
    		setResizable(true); //fenetre redimensionnable
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    		//On dit a l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
    	private JPanel buildContentPane(){
     
     
    		//Création de la fenetre
    		JPanel panel = new JPanel(); 
    		panel.setLayout(new GridLayout(6,2));
    		panel.setBackground(Color.lightGray);
     
    		//Création de la liste deroulante
    		labelcalcul = new JLabel("Méthode de calcul"); //texte
    		Object[] elements = new Object[]{"K-Means", "K-Medoïds"}; //liste déroulante
    		choixmethode = new JComboBox(elements);
     
    		//Création de la zone de texte nbclusters
    		labelcluster = new JLabel("Nombre de clusters"); //texte
    		nbclusters = new JTextField(); //zone de texte
     
    		//Création d'un bouton parcourir
    		labelimportation = new JLabel("Importation de données"); //texte
    		parcourir = new JButton("Parcourir..."); //bouton parcourir
     
    		//Création de la zone de texte donneesrandom
    		labelrandom= new JLabel("Ou nombre de données aléatoirement générées"); //texte
    		donneesrandom = new JTextField(); //zone de texte
     
    		generer = new JButton("Générer les données");
    		generer.addActionListener(this);
     
    		//Création d'un bouton Executer
    		 executer = new JButton("Executer");
     
     
    		//Ajout la fenetre
    		panel.add(labelcalcul);
    		panel.add(choixmethode);
    		panel.add(labelcluster);
    		panel.add(nbclusters);
    		panel.add(labelimportation);
    		panel.add(parcourir);
    		panel.add(labelrandom);
    		panel.add(donneesrandom);
    		panel.add(generer);
    		panel.add(executer);
     
     
    		return panel;
    	}	
     
     
    	public void actionPerformed(ActionEvent e) { //action du bouton parcourir //xls ou csv
    		//JFileChooser chemin = new JFileChooser();
            //int returnVal = chemin.showOpenDialog(getParent());
            //if(returnVal == JFileChooser.APPROVE_OPTION) {
            //   System.out.println("Fichier choisis :" +
            //        chemin.getSelectedFile().getName());}
     
     
    		Object source = e.getSource();
     
    		if(source == generer){
     
    			TabRandom tab=new TabRandom(Integer.valueOf(donneesrandom.getText()));
    			tab.remplissage();
    			System.out.println(tab.affiche());
    		}
    		else {System.out.println("osef");}
     
    	}
     
    }

  8. #8
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonjour,

    Dans la classe Fenêtre principale, il faut que tu rendes accessible le JTextField dont tu veux récupérer la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class FenetrePrincipale extends JFrame implements ActionListener{
    	private JTextField donneesrandom;
    	public JTextField getDonneesrandom(){
    		return this.donneesrandom;
    	}
    //le reste de ton code ...
    Dans ta classe ActionGenerer tu modifies actionPerformed en récupérant la valeur contenue dans donneesrandom de la fenêtre, et en le castant :
    le code en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void actionPerformed(ActionEvent e) { 
    	int val;
    	try{
    		val=Integer.valueOf(fenetre.getDonneesrandom().getText());
    	}
    	catch(NumberFormatException nfe){
    		val=50;
    	}
    	TabRandom tab=new TabRandom(val);
    	tab.remplissage();
    	System.out.println(tab.affiche());
    }
    Remarque :

    donneesrandom n'est pas un nom terrible :
    • il faudrait séparer les différentes parties du nom par des majuscules (notation Camel) : donneesRandom est plus lisible
    • pour les contrôles visuels, utiliser un prefix pour repérer dans le code le type des objets : txtDonneesRandom ou jtfDonneesRandom permet de savoir qu'il s'agit d'une zone de texte (notation Hongroise)

Discussions similaires

  1. Besoin d'aide avec les filtres imagemagick
    Par vallica dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 04/07/2008, 16h23
  2. besoin d'aide avec les session
    Par alain57 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2006, 20h25
  3. Besoin d'aide avec les regxp
    Par vodevil dans le forum Langage
    Réponses: 1
    Dernier message: 04/04/2006, 12h28
  4. Besoin d'aide avec les fichier htaccess et htpasswd
    Par Polux000 dans le forum Apache
    Réponses: 2
    Dernier message: 26/01/2006, 00h05
  5. Réponses: 2
    Dernier message: 29/08/2003, 17h52

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