Vous devez définir le nombre de colonnes dans votre champ de texte ou de donner un texte par défaut à elle. Le code suivant devrait fonctionner pour vous. J'ai mis à jour la réponse précédente pour utiliser la disposition Gridbag. Cependant, vous devez toujours définir le nombre de colonnes dans JTextField pour le rendre.
public class TestFrame extends JFrame {
public static void main(String[] args) {
new TestFrame();
}
private TestFrame() throws HeadlessException {
super();
this.setLocationByPlatform(true);
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[] { 100, 0 };
gbl_contentPane.rowHeights = new int[] { 0, 0, 0 };
gbl_contentPane.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
contentPane.setLayout(gbl_contentPane);
JTextField textField = new JTextField();
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.insets = new Insets(0, 0, 5, 0);
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.gridx = 1;
gbc_textField.gridy = 0;
contentPane.add(textField, gbc_textField);
textField.setColumns(10);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
}
}
Espérons que cela aide. Codage heureux!
Tout ce que vous avez fait est de créer un objet 'JTextField', vous ne l'avez jamais ajouté à votre panneau. – CollinD
Et 'setBounds' sera inutile sous le contrôle du gestionnaire de disposition – MadProgrammer
Cette' setLayout (new FlowLayout()); '& this' txt.setBounds (400, 300, 50, 20); 'sont incompatibles. La position d'un champ de texte est contrôlée par la mise en page (+ remplissage de la mise en page et bordures). La taille d'un champ de texte est déterminée en partie par la mise en page, ainsi que par le nombre de colonnes définies et la taille de la police. –