Pourquoi mes articles ne s'affiche pas dans JFrame?
Je suis assez nouveau dans JFrame et je voudrais savoir pourquoi mes articles ne s'affichent pas dans la fenêtre. Je sais que je n'ai pas de ActionHandler mais je veux juste mon champ de texte est de montrer à ma fenêtre. Voici mon code:
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class FirstGUI extends JFrame{
public void GUI(){
setTitle("Welcome");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(600,600);
JLabel title = new JLabel();
title.setText("Apple Inc. Member Login Port");
title.setFont(new Font("Arial", Font.PLAIN, 24));
JTextField login = new JTextField("Login",10);
JPasswordField pass = new JPasswordField("Password");
add(title);
add(login);
add(pass);
}
public static void main(String[] args){
FirstGUI a = new FirstGUI();
a.GUI();
}
}
mais quand je le lance j'obtiens ceci:
- Je crois que vous devez ajouter à vos composants à
context pane
et non pas directement sur le cadre. Voir docs.oracle.com/javase/tutorial/uiswing/components/... - Je crois que depuis Java 5 ce n'est pas plus nécessaire que
JFrame#add
les délégués à la fenêtre de contenu pour votre
Vous devez vous connecter pour publier un commentaire.
Vous obtenez un écran vide car vous ajoutez les composants de l'image, après que le cadre est visible.
setVisible(true)
APRÈS l'ajout de composants sur le châssis.De sorte que le code devrait être plus comme:
setVisible
La mise en page par défaut du gestionnaire de
JFrame
estBorderLayout
.Cela signifie que vos composants sont essentiellement été ajoutés ontop les uns des autres.
Essayez de changer le layout manager à quelque chose comme
FlowLayout
(par exemple)...Prendre un coup d'oeil à Un Guide Visuel pour les Gestionnaires de Mise en page et À L'Aide De Gestionnaires De Disposition pour plus de détails.
Aussi, éviter de
setSize
si possible, utilisezWindow#pack
au lieuMise à jour
Je tiens également à vous présenter à Initiale Fils qui devrait être utilisé pour lancer votre code de l'INTERFACE utilisateur...
Je suis d'accord pour MadProgrammer suggestions (+1)
Bien, permet de jeter un coup d'oeil à votre programme si
En fait, vous avez créé une JFrame avec des composants en elle. Son travail très bien, mais votre question de "pourquoi mes articles ne s'affiche pas dans la JFrame" est pas parce que vous avez fait quelque chose de mal, mais parce que raté quelque chose, c'est à dire revalidate()
Essayer:
Je ne dis pas que ce sera vous donner la parfaite INTERFACE utilisateur.. ce que j'essaie de dire est que cela va vous aider à comprendre le Swing mieux. Apprendre à propos de Swing gestionnaires de Disposition et ensuite travailler sur votre INTERFACE utilisateur pour avoir de meilleurs résultats
revalidate(): Ce composant et tous les parents au-dessus sont marqués comme devant être présentés. Cela signifie que le Gestionnaire de Mise en page va essayer de réaligner les composants. Souvent utilisé après la suppression de composants. Il est possible que certains vraiment forte swing personnes peuvent manquer cette. Je pense que vous saurez si vous êtes réellement en utilisant Swing.
La seule raison :
si vous donnez cette ligne sur le dessus de la code lorsque vous créez une image. Ce sera la cause de ce problème.
Ne pas ajouter les composants directement à votre image. Au lieu d'ajouter à la volet contenu de l', qui est l'endroit où une JFrame magasins de tous les composants qu'il utilise. Habituellement, c'est un Composite.
Voici un exemple:
Si cela échoue, appeler
setVisible(true)
etsetEnabled(true)
sur l'ensemble de vos composants.Sur une note de côté, vous pouvez faire de votre
GUI
fonction d'un constructeur.