Ce que j'essaie de faire est de modifier dynamiquement un panneau et de le lire dans la mise en page (Bordure). Le panneau contient des champs de texte et je souhaite que l'utilisateur puisse ajouter ou supprimer des champs de texte dans le panneau. Ce que j'ai essayé est le suivant: enlever le panneau de la disposition, ajouter un autre champ de texte au panneau, lire le panneau à la disposition. Cependant, cela ne fonctionne pas (rien ne se passe, seul le panneau a été supprimé mais pas lu avec le nouveau champ de texte, donc la zone était vide). Même lorsque j'ai supprimé le panneau de la mise en page puis ajouté un autre composant à la mise en page à cette position (BorderLayout.EAST) à la place; rien n'est arrivé (juste vide).Le panneau de préparation à la mise en page après l'édition du panneau?
Ceci est la partie du code qui ne fonctionne pas:
vfields[blocks] = new TextField("0"); //add new textfield to the array of textfields
blocks += 1;
dp.blocks = blocks;
this.remove(values_fields); //remove the values_fields panel from the borderlayout
values_fields.add(vfields[blocks]); //add new component,textfield to the panel
this.add(values_fields, BorderLayout.EAST); //readd the panel to the border layout<-- doesn't work
J'espère que quelqu'un peut me aider. Je suis relativement nouveau à Java donc je pourrais juste faire quelque chose de totalement faux ou quelque chose, mais je ne le vois pas moi-même.
Merci d'avance!
Skyfe.
Salut, je l'ai essayé et cela a fonctionné pour enlever des composants du panneau. Cependant, lorsque j'essaie d'ajouter des composants au panneau de manière dynamique, cela ne fonctionne pas. Works: \t \t \t \t \t \t values_fields.remove (vfields [blocs-1]); \t \t \t \t \t values_fields.validate(); \t \t \t \t \t values_fields.repaint(); Ne fonctionne pas: \t \t \t \t \t valeurs_fields.add (vfields [blocs]); \t \t \t \t \t values_fields.validate(); \t \t \t \t \t values_fields.repaint(); – Skyfe
Mise à jour: il me semble obtenir une exception Java NullPointerException sur la partie où j'utilise la méthode add: values_fields.add (vfields [blocks]). Qu'est-ce qui ne va pas? – Skyfe
Si cela ne fonctionne pas lorsque vous ajoutez des composants, c'est probablement parce que vous utilisez un gestionnaire de disposition qui vous oblige à spécifier des contraintes. Cela arrivera par exemple lorsque vous utilisez un IDE pour créer votre formulaire. La plupart des IDE utilisent le GroupLayout qui vous oblige à spécifier plusieurs contraintes. Mon conseil est de vider l'IDE et de coder les formulaires vous-même afin de savoir comment ajouter des composants et comment spécifier la contrainte requise. – camickr