Saltar al contenido

¿Cómo hacer un formulario de entrada en código Java (no Netbeans usando JForm)?

Te damos la bienvenida a nuestra página web, ahora hallarás la solucíon a lo que estás buscando.

Solución:

Sí, tienes que cambiar el diseño. Eche un vistazo a SpringLayout y este ejemplo:

texto alternativo


(fuente: sun.com)

String[] labels = "Name: ", "Fax: ", "Email: ", "Address: ";
int numPairs = labels.length;

//Create and populate the panel.
JPanel p = new JPanel(new SpringLayout());
for (int i = 0; i < numPairs; i++) 
    JLabel l = new JLabel(labels[i], JLabel.TRAILING);
    p.add(l);
    JTextField textField = new JTextField(10);
    l.setLabelFor(textField);
    p.add(textField);


//Lay out the panel.
SpringUtilities.makeCompactGrid(p,
                                numPairs, 2, //rows, cols
                                6, 6,        //initX, initY
                                6, 6);       //xPad, yPad

SpringLayout funciona bien para este formulario simple, pero hay bibliotecas de terceros que tienen más funciones. Es decir, diseño MiG.

Otra forma de crear un formulario usando GridBagLayout, produciendo el siguiente resultado:

ingrese la descripción de la imagen aquí

Código:

JPanel addressPanel = new JPanel();
Border border = addressPanel.getBorder();
Border margin = new EmptyBorder(10, 10, 10, 10);
addressPanel.setBorder(new CompoundBorder(border, margin));

GridBagLayout panelGridBagLayout = new GridBagLayout();
panelGridBagLayout.columnWidths = new int[]  86, 86, 0 ;
panelGridBagLayout.rowHeights = new int[]  20, 20, 20, 20, 20, 0 ;
panelGridBagLayout.columnWeights = new double[]  0.0, 1.0, Double.MIN_VALUE ;
panelGridBagLayout.rowWeights = new double[]  0.0, 0.0, 0.0, 0.0, 0.0,
                                               Double.MIN_VALUE ;
addressPanel.setLayout(panelGridBagLayout);

addLabelAndTextField("City:", 0, addressPanel);
addLabelAndTextField("Street:", 1, addressPanel);
addLabelAndTextField("State:", 2, addressPanel);
addLabelAndTextField("Phone:", 3, addressPanel);
addLabelAndTextField("Mail:", 4, addressPanel);

El método del ayudante addLabelAndTextField:

private void addLabelAndTextField(String labelText, int yPos,
                                  Container containingPanel) 

    JLabel label = new JLabel(labelText);
    GridBagConstraints gridBagConstraintForLabel = new GridBagConstraints();
    gridBagConstraintForLabel.fill = GridBagConstraints.BOTH;
    gridBagConstraintForLabel.insets = new Insets(0, 0, 5, 5);
    gridBagConstraintForLabel.gridx = 0;
    gridBagConstraintForLabel.gridy = yPos;
    containingPanel.add(label, gridBagConstraintForLabel);

    JTextField textField = new JTextField();
    GridBagConstraints gridBagConstraintForTextField = new GridBagConstraints();
    gridBagConstraintForTextField.fill = GridBagConstraints.BOTH;
    gridBagConstraintForTextField.insets = new Insets(0, 0, 5, 0);
    gridBagConstraintForTextField.gridx = 1;
    gridBagConstraintForTextField.gridy = yPos;
    containingPanel.add(textField, gridBagConstraintForTextField);
    textField.setColumns(10);

Actualmente está utilizando un GridLayout, que puede estar bien para su necesidad.

Sin embargo, debe inicializarlo con el número real de filas y columnas que necesitará. En tu caso:

new GridLayout(0, 2); 

0 para filas significa que no hay límite, y tiene 2 columnas, una para las etiquetas y otra para el componente de entrada. Consulte el tutorial de Java para obtener más información sobre GridLayouts.

texto alternativo
(fuente: sun.com)

Sin embargo, tenga en cuenta que GridLayout hará que todas las "celdas" tengan el mismo tamaño, lo que puede ser un problema para las etiquetas.

Sin embargo, Jonas tiene razón, un SpringLayout probablemente se adapte más a tus necesidades.

Aquí tienes las comentarios y valoraciones

Si piensas que te ha resultado de utilidad este artículo, agradeceríamos que lo compartas con más programadores de este modo contrubuyes a difundir nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *