2012-09-04 17 views
5

Estoy codificando una aplicación de lista de contactos en eclipse utilizando Java Swing. ¿Cómo puedo obtener un diseño de tabla simple que contenga solo columnas y filas? No quiero etiquetas de fila o columna.Crear un programa de lista de contactos

Algo como esto:

first name: john 
middle name: franklin 
last name: doe 

Cuando los nombres serían cuadros de texto editables etc.

Cuál es la mejor componente para usar?

También tendré botones debajo de los campos de texto. Actualmente tengo un JFrame que se está ejecutando correctamente. Se abre una ventana que tiene mis opciones de menú correctas. Pero cuando trato de hacer esto:

myFrame.setLayout(new GridLayout(6, 2)); 

Me sale un error. Me gustaría tener un diseño de cuadrícula de dos columnas y 5 filas (tal vez 6). Quiero tener una etiqueta en la columna de la izquierda y un cuadro de texto en la columna de la derecha. luego dos botones en la parte inferior, centrados.

Respuesta

4

Será mejor que rompa sus campos y controles (botones) en paneles separados, esto le permite suministrar diferentes administradores de diseño para cada uno.

Comenzaría con una base JPanel usando un BorderLayout.

En esto, agregaría el panel de "campos" en la posición CENTER y los controles (botones) en la posición SOUTH.

Para los campos, que haría uso de un GridBagLayout, pero yo soy exigente así, y para el panel de controles probablemente me utilizo un FlowLayout (a menos que tenga acceso a un buen gestor de ButtonLayout;))

Esto significa que podría terminar con algo como

enter image description here

actualizado con código de ejemplo

public class FormPanel extends JPanel { 

    private JTextField fldFirstName; 
    private JTextField fldMiddleName; 
    private JTextField fldLastName; 
    private JTextField fldDateOfBirth; 
    private JTextField fldEMail; 
    private JButton okButton; 
    private JButton cancelButton; 

    public FormPanel() { 

     setLayout(new BorderLayout()); 
     add(createFieldsPane()); 
     add(createButtonsPane(), BorderLayout.SOUTH); 

    } 

    public JPanel createButtonsPane() { 

     JPanel panel = new JPanel(new FlowLayout()); 
     panel.add((okButton = createButton("Ok"))); 
     panel.add((cancelButton = createButton("Cancel"))); 

     return panel; 

    } 

    protected JButton createButton(String text) { 

     return new JButton(text); 

    } 

    public JPanel createFieldsPane() { 

     JPanel panel = new JPanel(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.insets = new Insets(2, 2, 2, 2); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.anchor = GridBagConstraints.WEST; 

     panel.add(createLabel("First Name:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("Middle Name:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("Last Name:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("Date of Birth:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("EMail:"), gbc); 

     gbc.gridy = 0; 
     gbc.gridx++; 
     gbc.weightx = 1; 
     panel.add((fldFirstName = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldLastName = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldMiddleName = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldDateOfBirth = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldEMail = createField()), gbc); 

     JPanel filler = new JPanel(); 
     filler.setOpaque(false); 

     gbc.gridy++; 
     gbc.weightx = 1; 
     gbc.weighty = 1; 
     panel.add(filler, gbc); 

     return panel; 

    } 

    protected JLabel createLabel(String text) { 

     return new JLabel(text); 

    } 

    protected JTextField createField() { 

     JTextField field = new JTextField(12); 
     return field; 

    } 

} 
+0

Vea también ('difamado)' GroupLayout'. –

+0

Para formularios mi voto va (como siempre) al FormLayout de JGoodies – Robin

+0

¿Qué nadie sugiere MigLayout? – MadProgrammer

Cuestiones relacionadas