J'ajoute dynamiquement subPanel
à jPanel1
(avec jTextField
et jButton
). Une partie du code de pièce a été empruntée à there.obtenir le texte de jPanel ajouté dynamiquement
J'essaye d'obtenir le texte des composants de jPanel1
, mais ne peux pas réussir.
ÉDITÉ: Ceci est un sous-panneau qui contient jTextField
, +Button
et -Button
.
private class subPanel extends javax.swing.JPanel {
subPanel me;
public subPanel() {
super();
me = this;
JTextField myLabel = new JTextField(15);
add(myLabel);
JButton myButtonRemove = new JButton("-");
JButton myButtonAdd = new JButton("+");
add(myButtonRemove);
add(myButtonAdd);
est ici le code de AddButton:
jPanel1.add(new subPanel());
pack();
Le code que je suis en train d'obtenir le texte de jTextField
ne fonctionne pas:
Component[] children = jPanel1.getComponents();
for (int i=0;i<children.length;i++){
if (children[i] instanceof JTextField){
String text = ((JTextField)children[i]).getText();
System.out.println(text);
}
Votre réponse sera grandement apprécié.
Vous créez les nouveaux JPanel à addActionPerformed, non? Avez-vous essayé de conserver le nouveau JPanel en tant que variable dans le contexte de votre classe Main et d'accéder directement à ses membres? –
@Oliver Schmidt: Oui j'ai créé un nouveau JPanel dans addActionPerformed, et j'ai essayé votre suggestion quand je déclare JPanel comme variable que je ne pouvais pas ajouter dynamiquement jPanels. –
Tout d'abord, la méthode 'void addPanel()' n'est jamais appelée dans votre exemple de code. Pourtant, cela devrait être la méthode qui ajoute des contrôles à 'jXTaskPane1', non? Deuxièmement, la classe interne 'private class addPanel' n'ajoute aucune autre valeur à la classe JPanel qu'elle étend. Au lieu de cela, il déroute le lecteur :-) Troisièmement, lorsque j'exécute le code, ** vide ** JPanels (ou 'addPanel's) sont ajoutés à' jXTaskPane1'. Sûrement vous ne pouvez pas accéder à des contrôles sur un JPanel vide, car il n'y a rien à y accéder! :-) Pourriez-vous s'il vous plaît réécrire l'exemple afin qu'il fasse ce que vous avez indiqué dans votre question? –