Habilitar JButton

316 views
Skip to first unread message

Adrián E. Córdoba

unread,
Sep 23, 2009, 1:45:39 PM9/23/09
to JavaSOS
Estoy tratando de encontrar una forma eficiente de habilitar un
JButton dependiendo del contenido de varios JFormattedTextFields.
¿Alguien me puede dar una mano?
(Los detalles son bienvenidos: soy novato en programación Java.)

Agradecido de antemano.
Adrián

Marcelo Diaz

unread,
Sep 23, 2009, 2:21:31 PM9/23/09
to jav...@googlegroups.com
Hola Adrian...podrías dar mas detalle de lo que kerés hacer?? Asi podemos entrar en contexto...

Por ejeemplo....

El 23 de septiembre de 2009 14:45, Adrián E. Córdoba <softwa...@gmail.com> escribió:

Estoy tratando de encontrar una
 
forma eficiente

...a que t referis con ésto?? Eficiente = rapido OR simple OR escalable ???
 
de habilitar un
JButton dependiendo del contenido de varios JFormattedTextFields.

Cual es la condicion especifica? en base a la cual se modificó? en base a la concatenacion del texto de ellos ???
 
¿Alguien me puede dar una mano?
(Los detalles son bienvenidos: soy novato en programación Java.)

Agradecido de antemano.
Adrián





--
Lic. Marcelo Diaz.

Web & Java developer - OOP helper...:P
http://www.linkedin.com/in/marcelogdiaz

Javier Callo Quispe

unread,
Sep 23, 2009, 2:37:58 PM9/23/09
to jav...@googlegroups.com
creo que deberias darnos mayores detalles de lo quieres.

pero para habilitar o deshabilitar un JBUTTON seria suficiene que invoques al metodo setEnabled(false);
o en todo caso si no quieres que se vea, invocar la metodo setVisible(false);



2009/9/23 Marcelo Diaz <marcel...@gmail.com>



--
"La Vida es un Vaiven de Tristezas y Alegrias"
"Se lo que quieres ser, ve a donde quieres ir, ya que solo tienes una vida
y una oportunidad para ser y hacer todo lo que quieras y te propongas"

         Javier Callo Quispe
---------------------------------------------------
Lima Peru

Adrián E. Córdoba

unread,
Sep 23, 2009, 3:24:33 PM9/23/09
to JavaSOS
Marcelo / Javier:
Gracias por responder tan rápido.
El problema es así: Tengo un JFrame con varios
JFormattedTextFields y un JButton que inicialmente está deshabilitado
(setEnable(false)). Lo que quiero hacer es que cuando los JFormatted
TextFields estén (todos) llenos apropiadamente, el JButton se habilite
(setEnable(true)).
¿Se entiende?

Adrián

On 23 sep, 15:37, Javier Callo Quispe <javierf...@gmail.com> wrote:
> creo que deberias darnos mayores detalles de lo quieres.
>
> pero para habilitar o deshabilitar un JBUTTON seria suficiene que invoques
> al metodo *setEnabled(false);*
> o en todo caso si no quieres que se vea, invocar la metodo *
> setVisible(false);*
>
> 2009/9/23 Marcelo Diaz <marcelogd...@gmail.com>
>
>
>
> > Hola Adrian...podrías dar mas detalle de lo que kerés hacer?? Asi podemos
> > entrar en contexto...
>
> > Por ejeemplo....
>
> > El 23 de septiembre de 2009 14:45, Adrián E. Córdoba <
> > software.a...@gmail.com> escribió:

Ozkar

unread,
Sep 23, 2009, 3:29:11 PM9/23/09
to JavaSOS

creo que lo que debes hacer es recorrer los hijos del panel que
contiene esas cajas de texto, obtener y validar los valores que tiene
cada uno para así poder habilitar el botón que necesitas.

sería un solo método que invocarías en cada caja y que las validará
todas.

no tengo un ejemplo a la mano pero pronto yo he hecho ese tipo de
recorridos y resultan bastante útiles.

espero explicarme bien.

saludos.

On 23 sep, 13:37, Javier Callo Quispe <javierf...@gmail.com> wrote:
> creo que deberias darnos mayores detalles de lo quieres.
>
> pero para habilitar o deshabilitar un JBUTTON seria suficiene que invoques
> al metodo *setEnabled(false);*
> o en todo caso si no quieres que se vea, invocar la metodo *
> setVisible(false);*
>
> 2009/9/23 Marcelo Diaz <marcelogd...@gmail.com>
>
>
>
>
>
> > Hola Adrian...podrías dar mas detalle de lo que kerés hacer?? Asi podemos
> > entrar en contexto...
>
> > Por ejeemplo....
>
> > El 23 de septiembre de 2009 14:45, Adrián E. Córdoba <
> > software.a...@gmail.com> escribió:

Débora Hisgen

unread,
Sep 23, 2009, 4:07:20 PM9/23/09
to jav...@googlegroups.com
Supongamos que tenes 3 JFormattedTextFields: jf1, jf2 y jf3. Y tu JButton boton.

Una forma, a grandes rasgos, de implementarlo seria:

1- Generar un método dentro del cual estes chequeando las condiciones necesarias para habilitar el botón ...

public void validarCondiciones(){
//valida que sea distinto de vacio en este caso
  if(jf1.getText().trim().length() != 0&&jf2.getText().trim().length() != 0&&jf2.getText().trim().length() != 0){
     boton.setEnable(true);
 }
}
2-Agregales un KeyListener a cada uno de los JFormattedTextFields:
            jf1.addKeyListener(new TuKeyListener());

En tu caso en particular, calculo que realizarías la llamada al metodo validarCondiciones, dentro del keypressed, según lo que describis.


private class TuKeyListener implements KeyListener {

        public void keyPressed(KeyEvent e) {
              validarCondiciones();
        }

        public void keyReleased(KeyEvent e) {
          
        }

        public void keyTyped(KeyEvent e) {
       
      }
    }

Slds


2009/9/23 Adrián E. Córdoba <softwa...@gmail.com>

Adrián E. Córdoba

unread,
Sep 25, 2009, 8:18:14 AM9/25/09
to JavaSOS
Gracias por responder.
Pero seguí investigando en Internet y llegué a la conclusión de que es
un poco peligroso emplear esos métodos, ya que la lectura del teclado
puede depender del Look & Feel de la aplicación, y en especial para
poder controlar la entrada cuando se hace "cortar y pegar" para llenar
un campo de texto.
En lugar de eso, encontré lo siguiente:

class EnableButton extends JFrame
{
public EnableButton()
{
....
JTextField jtf1 = new JTextField();
Document jtf1Document = jtf1.getDocument();
jtf1Document.addDocumentListener(new ButtonStateController());

JFormattedTextField jftf2 = new JFormattedTextField(new
jftf2Formatter());
Document jftf2Document = jftf2.getDocument();
jftf2Document.addDocumentListener(new ButtonStateController());
....
}

private class ButtonStateController implements DocumentListener
{
ButtonStateController()
{
}

public void changedUpdate(DocumentEvent e)
{
disableIfEmpty(e);
}

public void insertUpdate(DocumentEvent e)
{
disableIfEmpty(e);
}

public void removeUpdate(DocumentEvent e)
{
disableIfEmpty(e);
}

public void disableIfEmpty(DocumentEvent e)
{
addHostButton.setEnabled((jtf1.getText().length() > 0 &&
jftf2.
isEditValid()));
}

}
}

public class jftf2Formatter extends DefaultFormatter
{
@Override
public String valueToString(Object value) throws ParseException
{
....
}

@Override
public Object stringToValue(String text) throws ParseException
{
....
}

}


Lo he probado, y funciona de maravilla.
Espero que sirva mi aporte.
Saludos, y gracias de nuevo.

[Adrián]



On 23 sep, 17:07, Débora Hisgen <debo.his...@gmail.com> wrote:
> Supongamos que tenes 3 JFormattedTextFields: jf1, jf2 y jf3. Y tu JButton
> boton.
>
> Una forma, a grandes rasgos, de implementarlo seria:
>
> 1- Generar un método dentro del cual estes chequeando las condiciones
> necesarias para habilitar el botón ...
>
> public void validarCondiciones(){
> //valida que sea distinto de vacio en este caso
>   if(jf1.getText().trim().length() != 0&&jf2.getText().trim().length() !=
> 0&&jf2.getText().trim().length() != 0){
>      boton.setEnable(true);
>  }}
>
> 2-Agregales un KeyListener a cada uno de los JFormattedTextFields:
>             jf1.addKeyListener(new TuKeyListener());
>
> En tu caso en particular, calculo que realizarías la llamada al metodo
> validarCondiciones, dentro del keypressed, según lo que describis.
>
> private class TuKeyListener implements KeyListener {
>
>         public void keyPressed(KeyEvent e) {
>               validarCondiciones();
>         }
>
>         public void keyReleased(KeyEvent e) {
>
>         }
>
>         public void keyTyped(KeyEvent e) {
>
>       }
>     }
>
> Slds
>
> 2009/9/23 Adrián E. Córdoba <software.a...@gmail.com>
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages