
// sentencias import
import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;


/**
 * Clase aplicación GUI_ejemplo
 */
public class Ejemplo_IGU
{

	/**
	 * Constructor de la clase donde se define la interfaz gráfica
	 */
	public Ejemplo_IGU()
	{
		// constantes del tamaño de los elementos de la ventana de la aplicación
		int TAM_ANCHO_FRAME = 200 ;
		int TAM_ALTO_FRAME  = 75 ;

		int TAM_ANCHO_BOTON = 110 ;
		int TAM_ALTO_BOTON  = 30 ;

		int TAM_ANCHO_TEXTO = 25 ;
		int TAM_ALTO_TEXTO  = 30 ;


		// VENTANA DE LA APLICACIÓN

		// crear nuevo JFrame
		JFrame gui = new JFrame("Ventana de la aplicación") ;
		// establecer el tamaño de la ventana
		gui.setSize(TAM_ANCHO_FRAME,TAM_ALTO_FRAME) ;
		// establecer que no se puede cambiar el tamaño de la ventana
		gui.setResizable(false) ;


		// CONTENEDOR PRINCIPAL DE LA VENTANA DE LA APLICACIÓN

		// crear nuevo contenedor principal
		JPanel mainContainer = new JPanel() ;
		// establecer el tamaño del contenedor
		mainContainer.setPreferredSize(new Dimension(TAM_ANCHO_FRAME,TAM_ALTO_FRAME)) ;
		// establecer un borde titulado en el contenedor
		mainContainer.setBorder(BorderFactory.createTitledBorder("Borde Titulado")) ;
		// establecer el gestor de disposición
		mainContainer.setLayout(new FlowLayout()) ;
		// establecer el contenedor como contenedor principal de la ventana
		gui.setContentPane(mainContainer) ;


		// CAJA DE TEXTO CON EL VALOR QUE SE INCREMENTA

		// crear una nueva caja de texto e inicializarla con el valor "0"
		JTextField textF = new JTextField("0") ;
		// establecer el tamaño de la caja de texto
		textF.setPreferredSize(new Dimension(TAM_ANCHO_TEXTO,TAM_ALTO_TEXTO)) ;
		// establecer que el usuario no pueda escribir en la caja de texto
		textF.setEditable(false) ;


		// BOTON QUE INCREMENTA EL VALOR DE LA CAJA DE TEXTO

		// crear un nuevo botón con el texto "Incrementar"
		JButton botonIncr = new JButton("Incrementar") ;
		// establecer el tamaño del botón
		botonIncr.setPreferredSize(new Dimension(TAM_ANCHO_BOTON,TAM_ALTO_BOTON)) ;
		// registrar un manejador de eventos asociado al botón
		botonIncr.addMouseListener(new ButtonMouseListener(botonIncr,textF)) ;


		// añadir el botón y la caja al contenedor principal; la disposición está
		// controlada por el gestor establecido en la definición del contenedor
		mainContainer.add(botonIncr) ;
		mainContainer.add(textF) ;

		// mostrar la ventana de la aplicación
		gui.pack() ;
		gui.setVisible(true) ;

		return ;

	}


	/**
	 * Método main de la aplicación
	 */
	public static void main(String[] args)
	{
		new Ejemplo_IGU() ;
	}

}


/**
 * Clase que atiende el evento que se genera al pulsar sobre el botón
 */
class ButtonMouseListener extends MouseAdapter
{
	JButton boton ;
	JTextField textF ;

	ButtonMouseListener(JButton p_boton,JTextField p_textF)
	{
		boton = p_boton ;
		textF = p_textF ;
	}

	/**
	 * Método que lee el valor de la caja de texto, lo incrementa en una unidad y
	 * escribe el valor resultante de nuevo en la caja de texto
	 */
	public void mousePressed(MouseEvent me)
	{
		String strValor = this.textF.getText() ;
		int valor = Integer.parseInt(strValor) ;
		valor++ ;
		this.textF.setText(""+valor) ;

	}

}

