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

 Java Discussion :

Jtextfield problème settext


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut Jtextfield problème settext
    Bonjour à tous,

    voici quelque temps que je suis sur le forum pour me documenter en java et je trouve le site générale très bien fait.

    je me trouve devant un problème de jtextfield et de listener.

    j'ai trois classe, une classe Droite et Gauche qui sont des jpanel de mes différent élément. puis j'ai ma classe Test qui elle est une extends jframe qui me permet de (fusionner) ma classe Droite et Gauche.

    quand l'utilisateur rentre une donnée dans le Jtextfield de la classe de gauche, il appuis ensuite sur le bouton créer, ou la j'ai un listener qui récupère en gettext le contenu du jtextfield de la classe Gauche et qui la copie en settext dans le jtextfield de la classe de Droite.

    le problème est que je n'ai pas de message d'erreur mais il ne me copie rien du tout

    je suis perdu là

    je dois faire cela pour mes cours, je dois re présenter mon examens et je bloque à ce niveau

    j'espère qui vous pourrez m'aider.

    voici les codes des classes :
    GAUCHE
    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
     
    package juin;
     
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.LayoutManager;
    import java.awt.ScrollPane;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.ListSelectionModel;
     
    public class Gauche extends JPanel {
     
    	//protected JPanel panelGauche;
    	private JPanel firstLigne,secondLigne,thirthLigne,fourLigne;
    	private JLabel pays;
    	private JTextField paysUtilisateur;	
    	private JList listeDrapeau;
    	private String liste[]={"Blanc","Jaune","Vert","Rouge","Bleu","Noir","Brun"};
    	private JRadioButton afrique, amerique, asie, europe, oceanie;
    	private Droite droite;
    	private ButtonGroup groupeBRadio;
    	private String text="tete";
    	private JButton creer;
     
    	public Gauche() {
     
    		super();
     
    		//Layout de la fenetre
    		setLayout(new GridLayout(4,1));
     
    		//premier élément du tableau
    		firstLigne = new JPanel();
    		droite = new Droite();
     
    		pays = new JLabel("Pays");
    		firstLigne.add(pays);
     
    		paysUtilisateur = new JTextField(20);
    		firstLigne.add(paysUtilisateur);
     
    		add(firstLigne);
     
    		//deuxième élément du tableau
    		listeDrapeau = new JList(liste);
    		secondLigne = new JPanel();
    		listeDrapeau.setVisibleRowCount(5);
    		listeDrapeau.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    		JScrollPane listeScrol = new JScrollPane(listeDrapeau);
    		secondLigne.add(listeScrol);
    		add(secondLigne);
     
    		//bouton radio
    		thirthLigne = new JPanel();
    		afrique = new JRadioButton("Afrique");
    		thirthLigne.add(afrique);
    		amerique = new JRadioButton("Amérique");
    		thirthLigne.add(amerique);
    		asie = new JRadioButton("Asie");
    		thirthLigne.add(asie);
    		europe = new JRadioButton("Europe",true);
    		thirthLigne.add(europe);
    		oceanie = new JRadioButton("Océanie");
    		thirthLigne.add(oceanie);
    		add(thirthLigne);
     
    		// création bouton créer
    		fourLigne = new JPanel();
    		creer = new JButton("Créer");
    		fourLigne.add(creer);
    		add(fourLigne);
     
    		creer.addActionListener(
    				new ActionListener(){
     
    					@Override
    					public void actionPerformed(ActionEvent e) {
     
    						droite.boxPays.setText(paysUtilisateur.getText());						
    					}
    		});
    	}
    }
    DROITE
    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
    package juin;
     
    import java.awt.Dimension;
    import java.awt.GridLayout;
     
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
     
    public class Droite extends JPanel{
     
    	protected JTextArea boxTextColor;
    	protected JTextField boxPays,boxCouleurs,boxContinent;
     
    	public Droite() {
    		super();
     
    		setLayout(new GridLayout(4,1));
     
    		boxTextColor = new JTextArea();
    		boxTextColor.setMaximumSize(new Dimension(10,10));
    		add(boxTextColor);
    		boxPays = new JTextField();
    		boxPays.setEditable(false);
    		boxCouleurs = new JTextField();
    		boxCouleurs.setEditable(false);
    		boxContinent = new JTextField();
    		boxContinent.setEditable(false);
     
    		add(boxPays);
    		add(boxCouleurs);
    		add(boxContinent);
    	}
     
    	protected void setBoxPays(JTextField boxPays) {
    		this.boxPays = boxPays;
    	}
    }
    TEST
    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
    package juin;
     
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.HeadlessException;
    import java.awt.LayoutManager;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Test extends JFrame{
     
    	private Container conteneur = getContentPane();
    	private Gauche gauchePanel;
    	private Droite droitePanel;
     
    	public Test() {
    		super("Gestion de personnes");
     
    		setLayout(new GridLayout(1,2));
    		gauchePanel = new Gauche();
    		conteneur.add(gauchePanel);	
     
    		droitePanel = new Droite();
    		conteneur.add(droitePanel);
     
    		setSize(600,400);
    		setVisible(true);
    	}
     
    	public static void main(String[] args) {
     
    		Test application = new Test();
    		application.setDefaultCloseOperation(EXIT_ON_CLOSE);
    	}
    }
    encore un grand merci

  2. #2
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Salut,

    Ta JFrame créé une instance de Gauche et une instance de Droite qu'elle affiche.
    Hors dans ta classe gauche tu créés une autre instance de Droite que tu manipules ensuite.
    Finalement tu modifies une instance de Droite qui n'est pas celle affichée par ta JFrame.

    Bien a toi

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut
    ok merci

    mais comment faire ?

    j'ai modifier mais quand je fait pour faire :

    Droite.settext, hé bien la je ne vois plus que Droit
    avant avec l'instance créer j'avais possibilité de faire droit.boxPays.settext

    maintenant je ne sais plus

    mes variable sont pourtant en protected

    ça dois être évident mais je suis dessus depuis 2 jour que je ne vois plus rien

    merci pour ton aide

  4. #4
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    je te propose une modif simple et rapide mais pas du meilleur gout.
    Passer ton panel Droit en argument du constructeur de Gauche afin d'initialiser ton attribut droite.

    Test
    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
    public Test() {
    		super("Gestion de personnes");
     
    		setLayout(new GridLayout(1, 2));
     
     
     
    		droitePanel = new Droite();
    		gauchePanel = new Gauche(droitePanel);
    		conteneur.add(gauchePanel);
    		conteneur.add(droitePanel);
     
    		setSize(600, 400);
    		setVisible(true);
    	}
    Gauche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Gauche(Droite droitePanel) {
     
    		super();
     
    		...
    		droite = droitePanel;
    ...
    }

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut
    merci poru ton aide mais

    le prof me donne des consigne pour faire le programme

    et cela je pense qu'il ne voudra pas

    tu n'a pas une autres solution ?

    un grand merci

  6. #6
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    - Faire de ta classe Test un singleton et la doter de getter sur Droite et Gauche.
    ou
    - Faire de tes classes Droite et Gauche des singletons
    ou
    - Appliquer le Pattern Mediator (sans doute le mieux)
    ou
    - Fusionner tes classes Droite et Gauche
    ou
    - etc...

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    je rajoute

    - ou rajouter une méthode getDroite() dans le panel de gauche et utiliser add(gauche.getDroite()) dans ton Test au lieu de add(new Droite())

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut
    super merci

    je vais essayer tout cela pour voir

    le singleton on à pas encore vu

    et fusionner les deux classe le prof veux pas

    je vais essayer un grand merci

Discussions similaires

  1. [JTextField] Problème rafraichissement
    Par init dans le forum Composants
    Réponses: 4
    Dernier message: 14/04/2008, 10h32
  2. [JtextField]Problème!
    Par @yoyo dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 24/04/2006, 12h13
  3. [JTextField] Problème d'affichage dans un champ ...
    Par mitje dans le forum Composants
    Réponses: 2
    Dernier message: 01/02/2006, 15h41
  4. [JTextField] Problème de focus
    Par clairette dans le forum Composants
    Réponses: 29
    Dernier message: 22/07/2005, 16h52
  5. [JTextField] Problème de setText()
    Par deathwing dans le forum Composants
    Réponses: 4
    Dernier message: 09/06/2004, 10h54

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