Ajouter un textfield créé dynamiquement dans un panel
alaricleon#
Messages postés4Date d'inscriptionjeudi 1 juin 2017StatutMembreDernière intervention 8 juillet 2019
-
8 juil. 2019 à 09:06
Twinuts
Messages postés5374Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention 3 mars 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.
Twinuts
Messages postés5374Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention 3 mars 2023111 8 juil. 2019 à 09:41
Salut,
As-tu fait appel à la méthode updateUI du panel ?
alaricleon#
Messages postés4Date d'inscriptionjeudi 1 juin 2017StatutMembreDerniè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.
alaricleon#
Messages postés4Date d'inscriptionjeudi 1 juin 2017StatutMembreDernière intervention 8 juillet 2019 8 juil. 2019 à 10:13
NB: le jtext1 ne fais plus parti du code
alaricleon#
Messages postés4Date d'inscriptionjeudi 1 juin 2017StatutMembreDerniè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();
}
Twinuts
Messages postés5374Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention 3 mars 2023111 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));
}
}
8 juil. 2019 à 10:12
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.
8 juil. 2019 à 10:13
Modifié le 8 juil. 2019 à 10:23
8 juil. 2019 à 10:46
Pardon, j'ai mis updateUI machinalement mais je pensais à la méthode revalidate...
Exemple: