L'ajout d'component swing jtextfield pour un Composite et de leur montrer
Je suis en train de construire une petite application en Java et Swing dans NetBeans. À l'aide de NetBeans conception de la fenêtre, j'ai créé une JFrame avec un Composite à l'intérieur.
Maintenant, je veux ajouter dynamiquement certains jTextFields pour le Composite.
J'ai écrit quelque chose comme ça:
Vector textFieldsVector = new Vector();
JTextField tf;
int i = 0;
while (i < 3) {
tf = new JTextField();
textFieldVector.add(tf);
myPanel.add(tf); //myPanel is the JPanel where I want to put the JTextFields
i++;
}
myPanel.validate();
myPanel.repaint();
Mais rien ne se passe: quand je lance l'application, la JFrame montre avec le Composite à l'intérieur, mais la JTextFields ne pas.
Je suis un total débutant dans l'écriture graphique, applications Java, donc je suis sûrement raté quelque chose de très simple, mais je ne vois pas quoi.
OriginalL'auteur Davide Gualano | 2009-02-13
Vous devez vous connecter pour publier un commentaire.
Dans Netbeans GUI, définir la mise en page du gestionnaire de quelque chose comme GridLayout ou FlowLayout (juste pour le test). Vous pouvez le faire en allant sur l'interface graphique de l'éditeur, en cliquant sur votre panneau, puis clic droit et en sélectionnant un modèle.
Une fois que vous avez changé pour une autre mise en page, allez dans les propriétés et modifier les propriétés de mise en page. Pour le GridLayout, vous voulez vous assurer que vous disposez de 3 cellules de la grille.
Au lieu de myPanel.validate(), essayez de myPanel.revalidate().
La plus canonique façon de le faire est de créer un Composite (sans l'aide de l'éditeur de GUI) qui établit son propre layout manager, remplit lui-même avec des composants, etc. Ensuite, dans le Netbeans, l'éditeur de l'interface glisser-déposer personnalisé Composite dans l'interface graphique de l'éditeur. Matisse est certainement capable de la manipulation de l'exécution-modification des composants Swing, mais ce n'est pas la voie normale de l'utiliser.
OriginalL'auteur James Schek
Il a été un moment depuis que j'ai fait un peu de Swing, mais je pense que vous aurez besoin de rappeler pack() pour indiquer l'image à la nouvelle disposition de ses composantes
EDIT: oui, je le savais qu'elle avait été trop longtemps depuis que j'ai fait de la Balançoire. J'ai frappé vers le haut le code suivant qui fonctionne comme attendu et ajoute les objets textfield...
Valider le fait que (mais sans la redimensionner).
OriginalL'auteur tddmonkey
Votre boucle while est fausse.
i
n'est jamais incrémenté de sorte que votre fenêtre de création est dans une boucle sans fin et votre consommation de CPU devrait être à 100% jusqu'à ce que vous abandonner le programme. Aussi, l'interface graphique doit être entièrement non-réactif lorsque vous exécutez votre programme.Code Compilable serait utile...
OriginalL'auteur Bombe
La manière habituelle d'utiliser
GroupLayout
est pour ajouter un composant à unGroup
.GroupLayout
conserve une référence à laContainer
il est responsable (ce qui est logique). Vous ne devriez pas être en ajoutant le composant du panneau, sans contraintes.OriginalL'auteur Tom Hawtin - tackline
Ne pas utiliser GroupLayout avec les nouveaux ajoutés dynamiquement). Il ne sera pas affiché.
OriginalL'auteur Raymond Gao
Suffit d'utiliser la
.setVisible()
méthode de component swing jtextfield:OriginalL'auteur Cork