Ajouter un textfield créé dynamiquement dans un panel

Messages postés
4
Date d'inscription
jeudi 1 juin 2017
Statut
Membre
Dernière intervention
8 juillet 2019
- - Dernière réponse : Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
- 8 juil. 2019 à 10:46
Bonjour, je développe une application en java sur netbeans en ce moment. Et, j'essaie d'ajouter des textfieds que j'ai créé dynamiquement dans un panel qui est déjà créé a partir du Design après avoir cliqué sur un bouton mais les textfields ne s'apparaissent pas or si ils sont ajoutés dans un panel créé dans le code source, ca marche parfaitement.

Merci
Afficher la suite 

1 réponse

Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87
0
Merci
Salut,

As-tu fait appel à la méthode updateUI du panel ?
alaricleon#
Messages postés
4
Date d'inscription
jeudi 1 juin 2017
Statut
Membre
Dernière intervention
8 juillet 2019
-
Evidemment, voici mon code :

String str = jtf.getText();
if(!str.equals("")){
int nb = Integer.parseInt(str);
JTextField jtext[] = new JTextField[nb];
jPanel1.removeAll();
for(int i= 0; i < jtext.length; i++){
jtext[i] = new JTextField("Matière" + i);
jtext1[i] = new JTextField("Note" + i);
}
jPanel1.updateUI();
}
il s'agit d'un panel que j'ai ajouté depuis la palette.
alaricleon#
Messages postés
4
Date d'inscription
jeudi 1 juin 2017
Statut
Membre
Dernière intervention
8 juillet 2019
-
NB: le jtext1 ne fais plus parti du code
alaricleon#
Messages postés
4
Date d'inscription
jeudi 1 juin 2017
Statut
Membre
Dernière intervention
8 juillet 2019
-
désolé voici le vrai code sans faute :
String str = jtf.getText();
if(!str.equals("")){
     int nb = Integer.parseInt(str);
     JTextField jtext[] = new JTextField[nb];
     jPanel1.removeAll();
     for(int i= 0; i < jtext.length; i++){
          jtext[i] = new JTextField("Matière" + i);
          jPanel1.add(jtext[i]);
     }
     jPanel1.updateUI();
 }
Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87 -
Re,

Pardon, j'ai mis updateUI machinalement mais je pensais à la méthode revalidate...
Exemple:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Test extends JFrame {

	public Test() {
		super("Test");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		JPanel content = (JPanel) getContentPane();
		/* TOP -> boutons */
		final JButton add = new JButton("Add");
		final JButton clear = new JButton("Clear");
		
		final JPanel top = new JPanel();
		top.add(add);
		top.add(clear);
		content.add(top, BorderLayout.NORTH);
		
		/* Utilisé pour l'ajout dynamique */
		final JPanel center = new JPanel();
		content.add(center, BorderLayout.CENTER);
		
		/* Actions */
		final ActionListener action = (e) -> {
			if(e.getSource().equals(add)) {
				center.add(new JTextField("Text " + center.getComponentCount()));
				center.revalidate();
			} else if(e.getSource().equals(clear)) {
				center.removeAll();
				center.repaint();
			} 
		};
		add.addActionListener(action);
		clear.addActionListener(action);
		
		setSize(new Dimension(600, 600));
		setLocationRelativeTo(null);
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> new Test().setVisible(true));
	}
}
Commenter la réponse de Twinuts