2017-04-02 3 views
0

Je suis nouveau à Java et essaie d'exécuter ce code. Qu'est-ce qui pourrait être une erreur dans le code suivant-mon JTextField, txtfld, est montré comme une ligne au lieu d'une zone de texte intégral?champ de texte non représenté avec la bonne taille

public class calculator 
{ 
    public static void main(String s[]) 
    { 
     JFrame j=new JFrame(); 
     j.setSize(400,600); 

     JPanel p1=new JPanel(); 
     JPanel p2=new JPanel(); 
     p1.setSize(400, 100); 
     p2.setSize(400, 500); 
     p1.setLocation(0, 0); 
     p2.setLocation(0, 100); 

     p2.setLayout(new GridLayout(4,4)); 
     j.add(p1); 
     j.add(p2); 


     JTextField txtfld=new JTextField(); 
     txtfld.setSize(390, 92); 
     txtfld.setLocation(5, 2); 
     //txtfld.setVisible(true);  
     p1.add(txtfld); 

     j.setVisible(true); 

    } 
} 
+2

Je suis sûr que vous n'écrivez pas votre code justifié à gauche, alors corrigez le code avec la bonne mise en forme pour nous faciliter la lecture du code. Les noms de classe doivent également commencer par un caractère majuscule. Suivez les normes Java. – camickr

+0

Pourriez-vous envoyer une capture d'écran de la 'JTextField'? – ostrichofevil

+0

1) Utiliser une forme logique et cohérente de lignes et de blocs de code à indentation. L'indentation est destinée à rendre le flux du code plus facile à suivre! 2) Apprendre la nomenclature Java courante (conventions de nommage - par exemple 'EachWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute' sauf s'il s'agit d'un 'UPPER_CASE_CONSTANT') et l'utiliser de façon cohérente. 3) Voir [Dois-je éviter l'utilisation des méthodes de taille (Preferred | Maximum | Minimum) set dans Java Swing?] (Http://stackoverflow.com/q/7229226/418556) (Oui.) –

Répondre

3
JTextField txtfld=new JTextField(); 

Vous devez donner une indication au gestionnaire de mise en page ce qui devrait être la taille.

vous devez donc utiliser quelque chose comme:

JTextField txtfld=new JTextField(10); 

Maintenant, la taille préférée sera tel que 10 caractères « W » peuvent être affichés dans le champ de texte avant que le défilement est nécessaire.

Vous devez également emballer() le cadre avant de le rendre visible:

j.pack(); 
j.setVisible(); 

Cela permettra au cadre pour afficher tous les composants à leurs tailles préférées.

De même, supprimez toutes les instructions setSize() et setLocation(). C'est le travail du gestionnaire de disposition de définir la taille et l'emplacement. Ces valeurs seront recalculées par le gestionnaire de disposition.

j.add(p1); 
j.add(p2); 

Le gestionnaire de disposition par défaut pour une trame est un BorderLayout. Donc, le code ci-dessus fera que p2 remplace p1 sur la trame.

Fondamentalement, tout votre code est erroné. Commencez par lire la section du tutoriel Swing sur le How to Use Layout Managers pour plus d'informations et des exemples de travail pour vous aider à démarrer. Peut-être commencer par l'exemple BorderLayout, puisque c'est la disposition par défaut du cadre dont vous avez besoin de comprendre comment cela fonctionne en premier.

+0

merci pour votre réponse. En fait, je fais une calculatrice donc je suis en train de définir la taille et l'emplacement de laisser un peu de rembourrage sur les côtés et entre les boutons. Dois-je toujours utiliser le gestionnaire de mise en page? –

+0

* "laissant un peu de marge sur les côtés et entre les boutons" * Les interfaces graphiques Java doivent fonctionner sur différents systèmes d'exploitation, taille d'écran, résolution d'écran, etc. en utilisant différents PLAFs dans différents environnements locaux. En tant que tels, ils ne sont pas propices à la mise en page pixel parfait. A la place, utilisez des gestionnaires de disposition, ou [des combinaisons d'entre eux] (http://stackoverflow.com/a/5630271/418556) avec ** padding de mise en page et des bordures pour [* white space *] (http://stackoverflow.com/ a/17874718/418556). ** –

+0

@kamalpreetkaur, - 'Je suis en train de définir la taille et l'emplacement de laisser un peu de rembourrage sur les côtés et entre les boutons» - lire le tutoriel.Il y a une section sur 'Comment utiliser les bordures 'pour laisser de l'espace sur les côtés. Chaque gestionnaire de disposition aura également différents paramètres ou façons d'ajouter de l'espace entre les composants. – camickr