Tamaño de JTextField utilizando showMessageDialog

Hola,
Estoy programando una interfaz para añadir datos a
una BBDD. Quiero hacer un formulario sencillo donde los JtextField
tengan el tamaño del campo de datos (Que al JTextField de un campo de 3
caracteres solo le quepa 3 caracteres).
Creo mi Dialog window de esta manera:
final JComponent[] inputs = new JComponent[] {
                        new JLabel("City Name"),
                        newCityName_,
                        new JLabel("City Code"),
                        newCityCode_,
                        new JLabel("District Code"),
                        newCityDistrict_,
                        new JLabel("Population"),
                        newCityPopulation_
                };
                JOptionPane.showMessageDialog(null, inputs, "Add City", JOptionPane.PLAIN_MESSAGE);
En este código las variables son todas JTextField.
Con eso obtengo campos de igual tamaño cuya longitud depende del tamaño de la ventana.
Intente jugar con los parámetros de JTextField:
- el constructor JtextField(int size)
- los metodos setColumns, setPreferedSize y setSize
Pero todo eso no cambia el tamaño de los campos.
También he creado la clase siguiente para engañar al showMessageDialog pero sin resultado:
class SizedTextField extends JTextField
{
    Dimension d;
    public SizedTextField (int cWidth)
    {
        d = new Dimension (cWidth * 16, 21);
    }
    public Dimension getPreferedSize () { return d; }
    public Dimension getMaximumSize () { return d; }
    public Dimension getMinimumSize () { return d; }
}
¿Tendría una idea?
Gracias.

1 respuesta

Respuesta
1
Intenta con el método setMaximumSize()
Modifique mi clase de la manera que me dijiste pero los campos siguen de tamaño fijos.
class SizedTextField extends JTextField
{
    Dimension d;
    public SizedTextField (int cWidth)
    {
        d = new Dimension (cWidth * 16, 21);
        this.setMaximumSize(d);
    }
    public Dimension getPreferedSize () { return d; }
    public Dimension getMaximumSize () { return d; }
    public Dimension getMinimumSize () { return d; }
}
¿Tienes más ideas?
Gracias.
Lo ultimo que quedaría es hacerlo con una validación en tiempo de ejecución de la siguiente forma:
en el metodo actionPerformed donde se ejecuta la accion puedes hacer una validacion como sigue
if (txtCampo.getText().trim().length() <3){
//pase
}else{
//agregue error y lo vuelve a solicitar
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas