Ajouter un textfield créé dynamiquement dans un panel

alaricleon# Messages postés 4 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 8 juillet 2019 - 8 juil. 2019 à 09:06
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 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
A voir également:

1 réponse

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 juil. 2019 à 09:41
Salut,

As-tu fait appel à la méthode updateUI du panel ?
0
alaricleon# Messages postés 4 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 8 juillet 2019
8 juil. 2019 à 10:12
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.
0
alaricleon# Messages postés 4 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 8 juillet 2019
8 juil. 2019 à 10:13
NB: le jtext1 ne fais plus parti du code
0
alaricleon# Messages postés 4 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 8 juillet 2019
Modifié le 8 juil. 2019 à 10:23
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();
 }
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 juil. 2019 à 10:46
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));
	}
}
0
Rejoignez-nous