[Java - AWT] Contar pulsaciones de botón

Estoy empezando a mirarme las interfaces gráficas y tengo los primeros problemas...
Quiero hacer un programa que cuente y muestre el número de clics en un botón.

Este es el código que he hecho:

package pruebas;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class Ventana extends Frame implements ActionListener, WindowListener,TextListener{
   int numero = 0;
   Label numero_clics = new Label("Numero de clics: ");
   TextField campo = new TextField(Integer.toString(numero),5);
   Button boton = new Button("Clic");

   public Ventana(){
      setSize(300, 240);
      setLayout(new FlowLayout());
      addWindowListener(this);
      boton.addActionListener(this);
      campo.addTextListener(this);
      add(numero_clics);
      add(campo);
      add(boton);
   }
   
   public static void main(String[] args){
      Ventana v = new Ventana();
      v.show();
   }
   
   @Override
   public void actionPerformed(ActionEvent e) {
      numero++;
      
   }


   @Override
   public void windowActivated(WindowEvent e) {
      // TODO Auto-generated method stub
      
   }


   @Override
   public void windowClosed(WindowEvent e) {
      // TODO Auto-generated method stub
      
   }


   @Override
   public void windowClosing(WindowEvent e) {
      System.exit(0);
      
   }


   @Override
   public void windowDeactivated(WindowEvent e) {
      // TODO Auto-generated method stub
      
   }


   @Override
   public void windowDeiconified(WindowEvent e) {
      // TODO Auto-generated method stub
      
   }


   @Override
   public void windowIconified(WindowEvent e) {
      // TODO Auto-generated method stub
      
   }


   @Override
   public void windowOpened(WindowEvent e) {
      // TODO Auto-generated method stub
      
   }

   @Override
   public void textValueChanged(TextEvent e) {
      System.out.println(e.toString());
      
   }

}


Al no variar, he pensado que para que se actualice el valor hay que añadir un TextListener, pero no varía...
Uhm, awt ya no se usa, eso está deprecated de cojones.

Ponte a usar al menos swing que es una mejora de awt y es mucho más decente.
Fox escribió:Uhm, awt ya no se usa, eso está deprecated de cojones.

Ponte a usar al menos swing que es una mejora de awt y es mucho más decente.


Ya, pero no he tocado nada de interfaces gráficas en la vida.
Un amigo me recomendó aprender awt, ya que swing, aunque es mucho más moderno, también es más complicado, y para coger las nociones básicas me vendría bien awt.
K. Ichigo escribió:
Fox escribió:Uhm, awt ya no se usa, eso está deprecated de cojones.

Ponte a usar al menos swing que es una mejora de awt y es mucho más decente.


Ya, pero no he tocado nada de interfaces gráficas en la vida.
Un amigo me recomendó aprender awt, ya que swing, aunque es mucho más moderno, también es más complicado, y para coger las nociones básicas me vendría bien awt.


Pero es casi como coger VB6 por ser mas facil...

Yo no usaria ni awt ni swing, pero puestos a elegir iria a swing del tiron.
Fox escribió:Yo no usaria ni awt ni swing, pero puestos a elegir iria a swing del tiron.


Qué otras alternativas hay en Java para interfaces gráficas?
Swing : Los "controles/widgets/cosicas" o como quieras llamarlos, por ejmplo un botón, etiquetas etc... los dibuja código que va sobre la jvm.

Swt : Auspiciada por IBM, su filosofía se basa en hacer llamadas al toolkit nativo en cada sistema, es decir en windows usará el API WIN32, en linux GTK o lo que toque,etc... No forma parte del API de Java.

Awt : Predecesora de Swing, parte del api oficial desde tiempos inmemoriales, sigue una filosofía similar a la Swt, es fuertemente criticada por su implementación.

Si no recuerdo mal Swing para eventos y alguna cosa más usaba Awt.

Aquí lo explicarán mejor:

http://www.ibm.com/developerworks/grid/ ... -swingswt/
K. Ichigo escribió:
Fox escribió:Yo no usaria ni awt ni swing, pero puestos a elegir iria a swing del tiron.


Qué otras alternativas hay en Java para interfaces gráficas?


wah_wah_69 te dio la respuesta.

Yo tendria que haber dicho: No usaría Java para interfaces gráficas. No sé, considero que hay mejores opciones para cada sistema operativo, pero vamos, no deja de ser mi opinión. Si te sientes cómodo, adelante :)
La verdad es que sois unos fieras [+risas] vale que AWT no es gran cosa, pero el chaval está aprendiendo <como yo> y una de las cosas que empiezas a ver es awt. Yo te voy a dar una idea de como lo haría yo:

Haría las siguientes clases:

Clase MyWindows extends frame => esta clase se encarga de colocar los elementos visuales así como definir también las propiedades que va a tener en la ventana, que si al pulsar la X se cierre, que si se minimice...etc. Ahí colgarás también los labels y botones. Yo lo que haría sería crear un frame (no muy grande) con un botón y una etiqueta que se seteará con el número de veces que se pulsa el botón.

Clase ManejadoraDelBoton implements actionListener => Le pasas la ventana como parámetro y lo que quieras. Una vez ahí la usas y por ejemplo, creas un contador que cuente las veces que se ha pulsado el botón. Acto seguido, seteas el label que has creado al contador que se va incrementando.

Clase main => Es la clase que crea la ventana, vamos la que va a ejecutar todo.

Nota: No tomar esta idea como ejemplo de buena programación.

Tengo varios ejemplos, por si te interesan.

ByEs [buenazo]
El problema es que cuando quieres hacer cualquier aplicación, no te pones a montar todos los botones, ventanas, etc. a base de código. Que el modelo vista-controlador de Java está muy bien teóricamente, pero en la práctica no se lleva así.

Lo que yo te recomiendo es que te instales Visual Studio y aprendas C#, que es prácticamente igual que Java, si ya sabes programar. Si no sabes programar mejor empezar por otra cosa y "olvidarte" de las interfaces gráficas, ya que es en lo que menos te deberías parar (estas cosas hoy día se hacen automáticamente).

Un saludo [bye]
wah_wah_69 escribió:Swing : Los "controles/widgets/cosicas" o como quieras llamarlos, por ejmplo un botón, etiquetas etc... los dibuja código que va sobre la jvm.

Swt : Auspiciada por IBM, su filosofía se basa en hacer llamadas al toolkit nativo en cada sistema, es decir en windows usará el API WIN32, en linux GTK o lo que toque,etc... No forma parte del API de Java.

Awt : Predecesora de Swing, parte del api oficial desde tiempos inmemoriales, sigue una filosofía similar a la Swt, es fuertemente criticada por su implementación.

Si no recuerdo mal Swing para eventos y alguna cosa más usaba Awt.

Aquí lo explicarán mejor:

http://www.ibm.com/developerworks/grid/ ... -swingswt/


Muchas gracias por la explicación!! ;) No conocía swt, me parece una gran idea. :)

Fox escribió:Yo tendria que haber dicho: No usaría Java para interfaces gráficas. No sé, considero que hay mejores opciones para cada sistema operativo, pero vamos, no deja de ser mi opinión. Si te sientes cómodo, adelante :)


Lo hago porque es con el lenguaje que me siento más cómodo y lo hago todo con más fluidez. C me parece un engorro comparado con Java, y Python hace bastante que no lo toco.

bitman escribió:...


Gracias por la explicación! :p Te dejo 2 links a 2 explicaciones muy buenas que he estado siguiendo estos días de awt y eventos. :)

http://fermat.movimage.com/eside/labinf ... 07-AWT.pdf
http://fermat.movimage.com/eside/labinf ... ventos.pdf

Está explicado de forma MUY MUY buena. Los demás temas en:
http://fermat.movimage.com/eside/labinfii/

PaVoLo escribió:El problema es que cuando quieres hacer cualquier aplicación, no te pones a montar todos los botones, ventanas, etc. a base de código. Que el modelo vista-controlador de Java está muy bien teóricamente, pero en la práctica no se lleva así.

Lo que yo te recomiendo es que te instales Visual Studio y aprendas C#, que es prácticamente igual que Java, si ya sabes programar. Si no sabes programar mejor empezar por otra cosa y "olvidarte" de las interfaces gráficas, ya que es en lo que menos te deberías parar (estas cosas hoy día se hacen automáticamente).

Un saludo [bye]


Gracias por el consejo. ;)
Estoy intentando toquetear las interfaces gráficas porque estoy un poco harto de la consola...
A mí Java no es un lenguaje que me guste para mis programas, ya que la mayoría son ultrapesados (OpenOffice, JDownloader, Mercury, Azureus...). Sin embargo, como he dicho, es el lenguaje que más domino.
9 respuestas