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 :

Copier les valeurs de TextField dans un autre


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Par défaut Copier les valeurs de TextField dans un autre
    Bonjour ,

    Sur mon interface graphique, on entre souvent les memes paramètres d'entrées plusieurs fois... Afin de palier à ca, j´ai créé un bouton "Copy" dont j'ai commencé à écrire le code, mais cela ne marche pas, je pense que cela vient des get inadaptés mais je ne trouve pas de solution...
    Voilà mon 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
    public class Copy implements ActionListener, Serializable {
    		private static final long serialVersionUID = 1L;
    		private JPanel jpMain;
    		private JPanel jpCaster;
     
    	public Copy (JButton jbCopy1, JPanel jpMain, JPanel jpCaster) {
    		// TODO Auto-generated constructor stub
    		//this.jpD = jpD;
    		this.jpMain = jpMain;
    		this.jpCaster = jpCaster;
    		jbCopy1.addActionListener(this);
     
    	}
    	@Override
    	public void actionPerformed (ActionEvent arg0){
    		if ( Integer.parseInt(jtNbrOfCaster.getText()) >= (int) 2){
     
     
    			cstrD2.setJlCasterSpeed(cstrD1.getJlCasterSpeed());
    			cstrD2.setJlLength(cstrD1.getJlLength());
    			cstrD2.setJlNbrOfStrd(cstrD1.getJlNbrOfStrd());
    			cstrD2.setJlStrdDist(cstrD1.getJlStrdDist());
    			jpCaster.updateUI();
    			jpMain.updateUI();
     
    		}
     
    	}
    Et mon interface, je voudrais copier les 4 paramètres du Caster 1 au Caster 2 :
    Nom : ProblemeCopy.PNG
Affichages : 728
Taille : 6,8 Ko

    Merci pour votre aide, en espérant etre dans le bonne partie du forum !

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Sans avoir le code des 8 méthodes (setters et getters) ci-dessous, on ne pourra pas t'aider (au moins pour un couple de setter/getter) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cstrD2.setJlCasterSpeed(cstrD1.getJlCasterSpeed());
    cstrD2.setJlLength(cstrD1.getJlLength());
    cstrD2.setJlNbrOfStrd(cstrD1.getJlNbrOfStrd());
    cstrD2.setJlStrdDist(cstrD1.getJlStrdDist());
    Par ailleurs, les updateUI() que tu appelles ne servent à rien (il n'y a pas de raison d'appeler ces méthodes si tu ne modifies pas les composants d'UI — je parle de modifier les classes).

    On peut avoir besoin de forcer le redessin parfois, sur des composants qui dessinent directement dans le contexte graphique en appelant repaint() (ce qui n'est pas nécessaire pour JTextField dont on modifie la valeur, parce que c'est déjà traité en interne).

    On peut avoir besoin de forcer le réagencement (layout) lorsque les modifications que l'on fait on un impact sur la taille ou la position : dans ce cas, on peut appeler revalidate().
    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 averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Par défaut
    Ok, je me doutais bien pour les update(), merci de l'explication.
    Pour le code c'est bien cela que tu veux ?

    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
    public JTabbedPane getJtCasterData() {
    		return jtCasterData;
    	}
     
    	public void setJtCasterData(JTabbedPane jtCasterData) {
    		this.jtCasterData = jtCasterData;
    	}
     
    	public JTextFieldAutoSelect getJtNbrOfCaster() {
    		return jtNbrOfCaster;
    	}
     
    	public void setJtNbrOfCaster(JTextFieldAutoSelect jtNbrOfCaster) {
    		this.jtNbrOfCaster = jtNbrOfCaster;
    	}
     
    	public CasterData getCstrD2() {
    		return cstrD2;
    	}
     
    	public void setCstrD2(CasterData cstrD2) {
    		this.cstrD2 = cstrD2;
    	}
     
    	public JPanel getJpStrandDevice2() {
    		return jpStrandDevice2;
    	}
     
    	public void setJpStrandDevice2(JPanel jpStrandDevice2) {
    		this.jpStrandDevice2 = jpStrandDevice2;
    	}
     
    	public JButton getJbAddCommonDevice() {
    		return jbAddCommonDevice;
    	}
     
    	public void setJbAddCommonDevice(JButton jbAddCommonDevice) {
    		this.jbAddCommonDevice = jbAddCommonDevice;
    	}
     
    	public JScrollPane getjSPCommon() {
    		return jSPCommon;
    	}
     
    	public void setjSP3(JScrollPane jSPCommon) {
    		this.jSPCommon = jSPCommon;
    	}
     
    	public LinkedList<PanelDevice> getlStrDevice2() {
    		return lStrDevice2;
    	}
     
    	public void setlStrDevice2(LinkedList<PanelDevice> lStrDevice2) {
    		this.lStrDevice2 = lStrDevice2;
    	}
     
    	public JTextFieldAutoSelect getJtCasterSpeed() {
    		return jtCasterSpeed;
    	}
     
    	public void setJtCasterSpeed(JTextFieldAutoSelect jtCasterSpeed) {
    		this.jtCasterSpeed = jtCasterSpeed;
    	}
     
    	public JTextFieldAutoSelect getJtLength() {
    		return jtLength;
    	}
     
    	public void setJtLength(JTextFieldAutoSelect jtLength) {
    		this.jtLength = jtLength;
    	}
     
    	public JTextFieldAutoSelect getJtNbrOfStrd() {
    		return jtNbrOfStrd;
    	}
     
    	public void setJtNbrOfStrd(JTextFieldAutoSelect jtNbrOfStrd) {
    		this.jtNbrOfStrd = jtNbrOfStrd;
    	}
    Autrement, j'aurais plus vu un code dans le genre dans la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cstrD2.getJlCasterSpeed.setText(cstrD2.getJlCasterSpeed());

  4. #4
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Non, je parlais du code des méthodes getJlCasterSpeed et setJlCasterSpeed, celles que tu utilises pour faire la copie.
    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.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Par défaut
    Ah je n'avais rien codé la dessus forcement, ca ne marchait pas...

    Mais en réalité, j'ai fait une faute, car ce sont des TextField et elles s'appellent donc jtCasterSpeed. On aura donc des getJtCasterSpeed(), et ceux là sont dans la balise que j'ai envoyé.

    J'ai donc ca maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void actionPerformed(ActionEvent arg0) {
    			if (Integer.parseInt(jtNbrOfCaster.getText()) >= (int) 2) {
     
     
    				cstrD2.setJtCasterSpeed(cstrD1.getJtCasterSpeed());
    				cstrD2.setJtLength(cstrD1.getJtLength());
    				cstrD2.setJtNbrOfStrd(cstrD1.getJtNbrOfStrd());
    				cstrD2.setJtStrdDist(cstrD1.getJtStrdDist());
     
    			}

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par cos12 Voir le message
    Mais en réalité, j'ai fait une faute, car ce sont des TextField
    Des JTextField plutôt non ? (n'utilise pas de java.awt.TextField, mais des javax.swing.JTextField).

    Citation Envoyé par cos12 Voir le message
    et elles s'appellent donc jtCasterSpeed. On aura donc des getJtCasterSpeed(), et ceux là sont dans la balise que j'ai envoyé.
    Je crois comprendre que getJTCasterSpeed() retourne un JTextField (ou un TextField). C'est pour cette raison que je t'ai demandé de me donner le code de ces méthodes : pour savoir quel type était retourné entre autre... pour éviter d'avoir à faire de la divination ou de la supputation !
    En tout cas si tu cherches à transférer des JTextField, oublie ! Ce n'est pas la bonne méthode : c'est le contenu des champs qu'il faut copier, pas les champs. En particulier, parce qu'un champ ne peut avoir qu'un seul parent : donc çà ne fera jamais de copie, mais au mieux un déplacement, et puis que peut bien faire le setter (là aussi si j'avais le code que j'ai demandé, je ne serais pas obligé de (me) poser la question) : affecter juste une variable ou remplacer un composant dans un container ?
    D'autre part, avoir des méthodes qui retourne des champs, au lieu de leur contenu, rend trop dépêndant le code de l'UI, qui pourrait changer à n'importe quel moment, obligeant à changer à plusieurs endroits. Si tu a un champ qui sert à saisie l'age du capitaine, fais un getter et un setter pour manipuler l'age du capitaine, que tu utilises un JTextField, un JSpinner, un JComboBox, ou un JLabel avec une image, voir une caméra pour analyse optique, peu importe, c'est toujours l'age du capitaine...


    Citation Envoyé par cos12 Voir le message
    J'ai donc ca maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void actionPerformed(ActionEvent arg0) {
    			if (Integer.parseInt(jtNbrOfCaster.getText()) >= (int) 2) {
     
     
    				cstrD2.setJtCasterSpeed(cstrD1.getJtCasterSpeed());
    				cstrD2.setJtLength(cstrD1.getJtLength());
    				cstrD2.setJtNbrOfStrd(cstrD1.getJtNbrOfStrd());
    				cstrD2.setJtStrdDist(cstrD1.getJtStrdDist());
     
    			}
    Bah, c'est toujours le même code que depuis le début, et qui me sert à rien de rien, vu que la plupart des méthodes ne sont pas standard, donc je ne peux pas savoir ce qu'elles font.
    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 averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Par défaut
    Effectivement ce sont des JTextField et les getters retournent des JTextField :
    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
    public JTextFieldAutoSelect getJtCasterSpeed() {
    		return jtCasterSpeed;
    	}
     
    	public void setJtCasterSpeed(JTextFieldAutoSelect jtCasterSpeed) {
    		this.jtCasterSpeed = jtCasterSpeed;
    	}
     
    	public JTextFieldAutoSelect getJtLength() {
    		return jtLength;
    	}
     
    	public void setJtLength(JTextFieldAutoSelect jtLength) {
    		this.jtLength = jtLength;
    	}
     
    	public JTextFieldAutoSelect getJtNbrOfStrd() {
    		return jtNbrOfStrd;
    	}
     
    	public void setJtNbrOfStrd(JTextFieldAutoSelect jtNbrOfStrd) {
    		this.jtNbrOfStrd = jtNbrOfStrd;
    	}
     
    	public JTextFieldAutoSelect getJtStrdDist() {
    		return jtStrdDist;
    	}
     
    	public void setJtStrdDist(JTextFieldAutoSelect jtStrdDist) {
    		this.jtStrdDist = jtStrdDist;
    	}
    Ils étaient déjà au dessus mais il fallait descendre un peu.

    Merci pour l'explication sur les champs, je veux juste affecter une variable (à l'aide du Setter) en gros je veux:
    Speed Caster 2 = Speed Caster 1 en appuyant sur Copy.

    Je suis totalement débutant, j'ai juste essayé une approche (qui s'avère mauvaise...)
    Merci.

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par cos12 Voir le message
    Merci pour l'explication sur les champs, je veux juste affecter une variable (à l'aide du Setter) en gros je veux:
    Speed Caster 2 = Speed Caster 1 en appuyant sur Copy.
    Et bien tu utilises la méthode getText() pour récupérer la valeur saisie dans le champs et tu l'as mets dans une variable, ou là où tu veux...


    Exemple, pour illustrer ce que je disais (la copie par modèle, c'est un peu ce que tu veux faire (les variables sont dans le modèle)) :

    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
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    public class CopyPanelDemo extends JPanel {
     
    	private JTextField field1;
    	private JTextField field2;
    	private JTextField field3;
     
    	public CopyPanelDemo() {
    		super(new GridBagLayout());
     
    		field1 = createField(0,"Field 1", randomData());
    		field2 = createField(1,"Field 2", randomData());
    		field3 = createField(2,"Field 3", randomData());
     
    	}
     
    	public void setData1(String text) {
    		if (text!=null) {
    			field1.setText(text);
    		}
    	}
     
    	public String getData1() {
    		return field1.getText();
    	}
     
    	public void setData2(String text) {
    		if (text!=null) {
    			field2.setText(text);
    		}
    	}
     
    	public String getData2() {
    		return field2.getText();
    	}
     
    	public void setData3(String text) {
    		if (text!=null) {
    			field3.setText(text);
    		}
    	}
     
    	public String getData3() {
    		return field3.getText();
    	}
     
    	public DataModel getData() {
    		DataModel dataModel = new DataModel();
    		dataModel.setData1(getData1());
    		dataModel.setData2(getData2());
    		dataModel.setData3(getData3());
    		return dataModel;
    	}
     
    	public void setData(DataModel data) {
    		if (data!=null) {
    			setData1(data.getData1());
    			setData2(data.getData2());
    			setData3(data.getData3());
    		}
    	}
     
    	public void reset() {
    		setData1(randomData());
    		setData2(randomData());
    		setData3(randomData());
    	}
     
    	private JTextField createField(int row, String name, String data) {
    		JLabel label = new JLabel(name);
    		add(label, new GridBagConstraints(0, row, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0));
    		JTextField field = new JTextField(data);
    		add(field, new GridBagConstraints(1, row, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0));
    		return field;
    	}
     
     
    	private final Random random = new Random();
    	private final static String BASE = "BATACAPODOMOTUTITEBIRINIMILEMERE";
    	private String randomData() {
    		if (random.nextDouble()<0.1) return "";
    		StringBuilder sb = new StringBuilder();
    		for( int i=2+random.nextInt(2); i>=0 ; i--) {
    			int j = random.nextInt(BASE.length()/2);
    			sb.append(BASE.substring(j*2, j*2+2));
    		}
    		return sb.toString();
    	}
     
    	public static void main(String[] args) {
     
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		frame.getContentPane().setLayout(new GridLayout(0, 2));
     
    		final CopyPanelDemo leftFieldPanel = new CopyPanelDemo();
    		final CopyPanelDemo rightFieldPanel = new CopyPanelDemo();
     
    		JPanel leftPanel = new JPanel(new BorderLayout());
    		leftPanel.add( leftFieldPanel );
     
    		JPanel rightPanel = new JPanel(new BorderLayout());
    		rightPanel.add( rightFieldPanel );
     
    		JButton leftResetButton = new JButton("Reset");
    		leftPanel.add( leftResetButton, BorderLayout.NORTH);
    		leftResetButton.addActionListener( new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				leftFieldPanel.reset();
    			}
    		} );
     
    		JButton leftButton = new JButton("Copie par champs >>");
    		leftPanel.add( leftButton, BorderLayout.SOUTH);
    		leftButton.addActionListener( new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				copieParChamp(leftFieldPanel, rightFieldPanel);
    			}
    		} );
     
     
    		JButton rightResetButton = new JButton("Reset");
    		rightPanel.add( rightResetButton, BorderLayout.NORTH);
    		rightResetButton.addActionListener( new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				rightFieldPanel.reset();
    			}
    		} );
     
    		JButton rightButton = new JButton("<< Copie par modèle");
    		rightPanel.add( rightButton, BorderLayout.SOUTH);
    		rightButton.addActionListener( new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				copieParModel(rightFieldPanel, leftFieldPanel);
    			}
    		} ); 
     
    		frame.add(leftPanel);
    		frame.add(rightPanel);
     
     
    		frame.setSize(400, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
     
    	}
     
    	public static void copieParChamp(CopyPanelDemo source,
    			CopyPanelDemo target) {
     
    		target.setData1( source.getData1() );
    		target.setData2( source.getData2() );
    		target.setData3( source.getData3() );
     
    	}
     
    	public static void copieParModel(CopyPanelDemo source,
    			CopyPanelDemo target) {
     
    		target.setData( source.getData() );
     
    	}
     
    	public static class DataModel {
     
    		private String data1;
    		private String data2;
    		private String data3;
     
    		public void setData1(String text) {
    			data1=text;
    		}
     
    		public String getData1() {
    			return data1;
    		}
     
    		public void setData2(String text) {
    			data2=text;
    		}
     
    		public String getData2() {
    			return data2;
    		}
     
    		public void setData3(String text) {
    			data3=text;
    		}
     
    		public String getData3() {
    			return data3;
    		}
     
    	}
     
    }
    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 éclairé Avatar de damtoul
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 60
    Par défaut
    Bonjour,

    Pour faire simple, au clik copy :
    tu fais un .getText() sur tes 4 JTextFields du caster1.
    Tu fais un .setText() sur les 4 JTextFields du caster2.

    Tu mets les 8 jextfields dans des tableaux de jextfields : tabc1 et tabc2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i=0;i<4;i++)
    {
      String s=tabc1[i].getText();
      tabc2[i].setText(s);
    }
    Perso c'est ce que je ferais, c'est rangé et simple.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Par défaut
    Merci pour les réponses , j'ai testé les deux propositions, bon la 2 ème semble plus simple, il me manque juste un petit truc pour que ca marche

    Voilà mon code, le problème se situe sur le setText(); faire un setText sur un tableau de String ce n'est pas trivial:

    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
    public void actionPerformed(ActionEvent e) {
     
    			System.out.println("34");
     
    				String tabData2[] = {cstrD2.getJtCasterSpeed().getText(),cstrD2.getJtLength().getText(),cstrD2.getJtNbrOfStrd().getText(),cstrD2.getJtStrdDist().getText()};
    				String tabData1[] = {cstrD1.getJtCasterSpeed().getText(),cstrD1.getJtLength().getText(),cstrD1.getJtNbrOfStrd().getText(),cstrD1.getJtStrdDist().getText()};
     
    				for (int i=0;i<4;i++)
    				{
     
     
    				  String s=tabData1[i];
     
    			    System.out.println(s);
     
     
    			    tabData2[i].setText(s);
    				}
     
     
     
    		}
    Une idée ? Le message d'erreur est "The method setText(String) is undefined for the type String" .

  11. #11
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Plus simple, mais on voit tout de suite que ça ta permis d'écrire un code illisible, plus rigide, favorisant les erreurs et moins maintenable.

    Sinon, l'erreur que tu obtiens est très claire : tu appelles la méthode setText() sur une variable de type String. Or le type String n'a pas de méthode setText().
    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.

  12. #12
    Membre éclairé Avatar de damtoul
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 60
    Par défaut
    +1 avec Joel.

    Refais ton actionPerformed comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public void actionPerformed(ActionEvent e) { this.copyTextFromJTextFieldsTabs(this.nomclasseGetTab1,this.nomclasseGetTab2)
    		}
    dans la classe de ton actionPerformed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void copyTextFromJTextFieldsTabs(JTextField[] tabData1,JTextField[] tabData2)
    {
    for (int i=0;i<4;i++)
    	{
    	  String s=tabData1[i].getText();
    			    tabData2[i].setText(s);
    		}
    }
    Dans la classe "nomclasse" où tu instancies tes JTextFields tu as en attributs tes deux tableaux : à l'instanciation du JTextField tu l'ajoutes au tableau. Perso je fais avec des arraylist c'est plus souple.
    Et dans cette même classe tu as des méthodes this.nomclasseGetTab1 et this.nomclasseGetTab2.

    +1 comme dit Joel, tu as implémenté l'algo d'une façon qui rend le code peu lisible et te trompes dans des erreurs de type puisque tu essayes de faire un getText() sur une variable de type String au lieu de JTextFields : c'est une liste de JTextFields qu'il faut que tu aies, pas une liste de String.
    Enfin je n'ai pas compilé mon code, il y a p-e des erreurs, mais l'idée y est. :o

    Bon enfin je ne veux pas t'emmêler non plus avec une autre façon d'implémenter, la discussion que tu avais avec Joel allait dans le bon sens.

  13. #13
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Au moins comme ça (pour éviter toute déconvenue future) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void copyTextFromJTextFieldsTabs(JTextField[] tabData1,JTextField[] tabData2)
    {
    for (int i=0;i<tabData1.length&&i<tabData2.length;i++)
    	{
    	  String s=tabData1[i].getText();
    			    tabData2[i].setText(s);
    		}
    }
    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.

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Par défaut
    Merci à vous, ca marche très bien !

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/05/2015, 04h39
  2. Copier les valeurs d'une table dans une autre
    Par Invité dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/08/2013, 17h11
  3. Réponses: 3
    Dernier message: 13/01/2009, 17h55
  4. Copier les valeurs d'une colonne dans une autre
    Par hochimi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/07/2007, 14h14

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