java - tesis - TextBox no se muestra en el marco hasta que el marco se estira manualmente
poblacion y muestra de una investigacion ejemplos (1)
Estoy tratando de crear una página de inicio de sesión. Escribí código para dos cuadros de texto y un botón. Un cuadro de texto al lado del nombre de usuario y otro al lado de la contraseña. Un botón de "Iniciar sesión" a continuación. Pero no estoy seguro de por qué los cuadros de texto y el botón no se muestran en mi salida. Solo obtengo el nombre de usuario y la etiqueta de la contraseña en la pantalla de mi salida.
Lo extraño es que cada vez que estiro mi cuadro de salida (me refiero a tirar de la pantalla horizontal o verticalmente) aparecen las dos cajas de texto y el botón.
Por favor revisa mi código y avísame qué sucede. Estaba tratando de poner fotos para que sea más fácil de entender, pero no tengo suficiente reputación. Por favor ayuda.
import javax.swing.*;
import java.awt.*;
public class HomeScreen{
public static void main(String args[]){
JFrame frame = new JFrame("Medical Store");
frame.setVisible(true);
frame.setSize(600,400);
JPanel panel = new JPanel(new GridBagLayout());
frame.getContentPane().add(panel, BorderLayout.NORTH);
GridBagConstraints c = new GridBagConstraints();
JLabel label1 = new JLabel("Username");
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(10,10,10,10);
panel.add(label1,c);
JLabel label2 = new JLabel("Password");
c.gridx = 0;
c.gridy = 1;
panel.add(label2,c);
JTextField textbox1 = new JTextField(10);
c.gridx = 1;
c.gridy = 1;
panel.add(textbox1,c);
JTextField textbox2 = new JTextField(10);
c.gridx = 2;
c.gridy = 1;
panel.add(textbox2,c);
JButton button1 = new JButton("Sign In");
c.gridx = 1;
c.gridy = 2;
panel.add(button1,c);
}
}
Está llamando a setVisible(true)
antes de agregar todos los componentes, por lo que su GUI está haciendo exactamente eso , dibujándose antes de agregar componentes.
JFrame frame = new JFrame("Medical Store");
frame.setVisible(true);
// all components added here
Solución: realice la setVisible(true)
al final después de agregar todos los componentes.
JFrame frame = new JFrame("Medical Store");
// all components added here
frame.setVisible(true);
Ahora todos los componentes deben ser visualizados.
Otras objeciones:
- Evite llamar a
setSize(...)
en cualquier cosa. En su lugar, permita que los administradores de diseño y los tamaños preferidos de componentes lo hagan por usted. - Call
pack()
en el JFrame justo antes de configurarlo para que ocurra lo anterior.