Pas en mesure d'ajouter component swing jtextfield pour JFrame
Je ne suis pas en mesure d'ajouter JTextField
à JFrame
. Mon JFrame
contient un JLabel
et un JTextField
.
Tout d'abord, j'ai ajouté le JLabel
, et il est de travail. Voici le code.
private static void createandshowGUI()
{
JFrame frame =new JFrame("HelloSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.red);
frame.setSize(200,200);
JLabel label=new JLabel("New To Java!!");
frame.getContentPane().add(label);
frame.setVisible(true);
}
public static void main(String[] args) {
createandshowGUI();} //and it shows the output like below .
Puis j'ai ajouté le component swing jtextfield .
JLabel label=new JLabel("New To Java!!");
frame.getContentPane().add(label);
JTextField jtf=new JTextField();
frame.getContentPane().add(jtf);
frame.setVisible(true);
Mais ensuite il affiche la sortie comme ça.
Svp quelqu'un peut m'aider sur cette question.Puis-je ajouter de plus d'un composant à JFrame?Comme je suis nouveau sur le Java, je vais avoir une confusion entre les images,ContentPane et Mises en page.
+1 pour parfaitement structuré question.
OriginalL'auteur Sam | 2013-03-02
Vous devez vous connecter pour publier un commentaire.
En fait, vous avez du succès dans l'ajout d'
JTextField
. Le problème que vous rencontrez découle de la mise en page du gestionnaire qui s'étend à travers l'ensemble de l'image.Le volet de contenu d'
JFrame
utilise unBorderLayout
gestionnaire par défaut. (Voir Comment Utiliser BorderLayout)Dans mon application un finissait toujours par à l'aide de la MigLayout manager, mais vous souhaitez vous familiariser avec la disposition des gestionnaires en général. (Voir Un Guide Visuel pour les Gestionnaires de Mise en page)
OriginalL'auteur Daniel Rikowski
Votre
ContentPane
a unBorderLayout
par défaut, qui n'accepte qu'un seul élément (dans la position par défaut - le centre). Après avoir ajouté un deuxième élément (laJTextField
), il a remplacé le dernier (leJLabel
).Lorsque vous ajoutez des éléments à un
Container
à l'aide de l'unique argumentadd
, vous n'êtes pas en précisant le poste que vous voulez, de sorte que le layout manager choisit une position à volonté. Otoh, que si vous spécifiez des contraintes (à l'aide de la surchargé ajouter), alors vous avez plus de contrôle sur l'endroit où l'élément sera placé. Vérifiez la documentation pour chaque gestionnaire de présentation pour voir comment ils fonctionnent et quelles contraintes il prend en charge.Pour votre situation actuelle, vous pouvez utiliser un intermédiaire
JPanel
(qui aFlowLayout
par défautLayoutManager
- le plus simple à mon humble avis, pour qui est encore en apprentissage) au lieu d'ajouter des éléments directement à la fenêtre de contenu, ou simplement modifier sa mise en page à autre chose.OriginalL'auteur mgibsonbr
Un
JFrame
ne peut avoir qu'un composant (sauf si vous utilisez des qu'il a unBorderLayout
). La solution est d'utiliser unJPanel
.Vous ajoutez des objets à un Composite puis ajouter le
JPanel
à laJFrame
. Vous devez ajouterimport javax.swing.JPanel;
trop. Vous pouvez faire quelque chose comme ceci:Cela devrait fonctionner.
Mais Daniel Rikowski la réponse a été le plus utile? 😉
Oui.bien sûr. C'est pourquoi j'ai accepté cette réponse. Mais j'ai reçu avec une certaine question dans la Frontière de Mise en page, dont j'ai été sur le point de demander. Et le groupe m'a donné le résultat instantané. 🙂 Merci à vous.
OriginalL'auteur stomstack