Diferencia entre revisiones de «Usuario:ManuelRomero/javasintaxis»

De WikiEducator
Saltar a: navegación, buscar
(Layout GridBagLayout)
(Eventos)
 
(6 revisiones intermedias por el mismo usuario no mostrado)
Línea 21: Línea 21:
  
 
==Eventos==
 
==Eventos==
<source lang="java">
+
*Un ''''evento'''' es una ''acción o suceso'' que ocurre sobre un ''objeto'' que es sensible a dicha acción
 
+
*Ejemplo de un evento
import javax.swing.*;
+
**Hacer un click sobre un botón
 
+
**pasar el cursor del ratón por encima de un elemento de mi pantalla
import concesionario.Cliente;
+
**Un porceso le envía una señal a la impresora de que quiere imprimir
 
+
*Es típico de la programación visual que esté conducida por eventos
import java.awt.*;
+
**Ahora el programa ya no tiene una secuación lógica de instrucciones para se ejecutada, no sigue un camino marcado
import java.awt.event.ActionEvent;
+
*El programa presenta una interfaz gráfica una serie de elementos gráficos u objetos
import java.awt.event.ActionListener;
+
*El usuario de la aplicación en función de lo que quiera hacer realiza acciones en la interfaz gráfica
import java.sql.SQLException;
+
*La interfaz gráfica identifica esas acciones o eventos y ejecuta código asociado a dichas acciones
import java.awt.Event.*;
+
*Por lo tanto la ejecución del programa dependerá de los eventos que se vayan produciendo, el programa se presenta como una interfaz que está esperando a que ocurran enventos, ocurre un evento ejecuto un código asocido de alguna manera a dicho evento y de nuevo el programa se queda en estado de espera a que ocurra otro evento
import java.sql.*;
+
===Delegación de eventos en Java===
 
+
No todos los entornos de desarrollo gestionan los eventos de igual manera. Java realiza la gestión de eventos delegando, y se conoce como ''''delegacion de eventos''''
public class ICliente extends JFrame{
+
por qué se conoce con este nombre:
 
+
hasta ahora vemos en este escenario dos elementos:
+
el evento que se produce
// Definición de objetos gráficos para el interfaz
+
El objeto sobre el que se produce el evento que es quien va a generarlo
JLabel lNum = new JLabel ("Número");
+
esta frase no nos debe confundir. Efectivamente el evento se ha producido por que un usuario a realizado una acción sobre un objeto, es el usuario el que ha originado o provocado el evento, pero en el sistema el evento lo va a generar el objeto sobre el que se ha producido.pongamos un ejemplo para verlo.
JTextField tNum = new JTextField(5);
+
===Evento, y source del evento===
JLabel lApellido = new JLabel("Apellido");
+
Tengo un botón de timbre. una persona (usuario) llega a la puerta y presiona el botón del timbre (objeto) y el timbre provoca un ruido (evento)
JTextField tApellido = new JTextField (5);
+
[[Archivo:Java_evento1.jpg.png]]
JLabel lNombre = new JLabel("Nombre");
+
Podemos analizar el escenario y observar:
JTextField tNombre = new JTextField (5);
+
*1 elemento externo a mi programa
JButton bPrimero = new JButton("primero");
+
  (usuario) quien ha provocado el evento
JButton bAnterior = new JButton("anterior");
+
*dentro del programa tendo dos elemntos
JButton bSiguiente= new JButton("siguiente");
+
**'''Evento''' que se produce ''suena el timbre ''
JButton bUltimo = new JButton("ultimo");
+
**'''Objeto source''' de dicho evento ''el bóton genera un sonido de timbre'
//Paneles contenedores además del contenedor principal que es el frame
+
*Ahora pueden ocurrir dos cosas: siguiendo con el ejemplo (suponemos que es el timbre de una casa)
JPanel pDatos = new JPanel();
+
**Que no hay nadie dentro de casa y el sonido se pierde, nadie lo oye y por lo tanto nadie hace nada
JPanel pBotones = new JPanel();
+
**Que hay una persona dentro de casa y está escuchando oye el sonido del tiembre y actua abriendo la puerta
//Layout para distribución de objetos en el contenedor
+
**Que hay una persona en casa pero no está escuchando ya que por ejemplo lleva cascos (En realidad es igual que el caso primero, es como si no hubiera)
FlowLayout fL = new FlowLayout();
+
*Entonces aparece el concepto de delegación de eventos
BorderLayout bL= new BorderLayout();
+
**El botón ha generado el evento '''ring''' y este delega el evento en un escuchador
BoxLayout bxL = new BoxLayout(this.getContentPane(),BoxLayout.LINE_AXIS);
+
***si hay un objeto escuchando a ese objeto actuará en consecuencia
+
***si no hay objeto escuchando o lo hay pero no lo hace a ese objeto, el evento se pierde, (nadie actúa ante él)
//para poderme comunciar con otras clases
+
:Por lo tanto tenemos tres objetos
Cliente cliente = new Cliente();
+
;El Source
    ResultSet consulta; //Para trabajar con el resultado de una consulta concreta
+
;El Event
static Conexion conexion; //static para poder ser usada en el main que es static
+
;El Listener
+
+
+
 
+
public ICliente(){
+
//Ponemos los layout
+
pDatos.setLayout(fL);
+
pBotones.setLayout(fL);
+
    setLayout(bL);
+
   
+
    //Añadimos los objetos a los contenedores
+
    //primero los contenidos a los paneles
+
    pBotones.add(bPrimero);
+
    pBotones.add(bSiguiente);
+
    pBotones.add(bAnterior);
+
    pBotones.add(bUltimo);
+
   
+
    pDatos.add(lNum);
+
    pDatos.add(tNum);
+
    pDatos.add(lNombre);
+
    pDatos.add(tNombre);
+
    pDatos.add(lApellido);
+
    pDatos.add(tApellido);
+
   
+
   
+
    //Luego los paneles al JFrame
+
    add(pDatos,bL.PAGE_START);
+
    add(pBotones,bL.PAGE_END);
+
   
+
   
+
    //Colocamos y visualizamos el JFrame
+
    setBounds(100,100,600,200);
+
    setTitle("Recorrido de la tabla Clientes");
+
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
    setVisible(true);
+
   
+
    //Cremos un objeto escuchador de la interfaz ActionListener
+
    ManejadorEventos elEscuchador= new ManejadorEventos();
+
   
+
    //Agregamos este objeto a los botones desde los que quieremos recoger el evento
+
    bPrimero.addActionListener(elEscuchador);
+
    bSiguiente.addActionListener(elEscuchador);
+
    bAnterior.addActionListener(elEscuchador);
+
    bUltimo.addActionListener(elEscuchador);
+
   
+
    //Realizamos la consulta para después moverme sobre ella (avanzar o retroceder).
+
    try{
+
    consulta  =conexion.hacerConsulta("Select * from clientes");
+
    }catch(SQLException ex){
+
    System.out.println("Error "+ex.getMessage());
+
    }
+
   
+
}
+
public void cargaDatos(Cliente c){
+
tNombre.setText(c.getNombre());
+
tApellido.setText(c.getApellido());
+
tNum.setText(c.getNumero().toString());
+
+
  }
+
+
private class ManejadorEventos implements ActionListener{
+
public void actionPerformed(ActionEvent e) {
+
try{
+
if (e.getSource()== bPrimero){
+
      if (consulta.isFirst())
+
        JOptionPane.showMessageDialog(null,"Ya es el primer registro");
+
      else
+
      consulta.first();
+
      }
+
if (e.getSource()== bSiguiente){
+
      consulta.next();
+
      }
+
if (e.getSource()== bAnterior){
+
      consulta.previous();
+
      }
+
if (e.getSource()== bUltimo){
+
      if (consulta.isLast())
+
        JOptionPane.showMessageDialog(null,"Ya es el último registro");
+
      else
+
      consulta.last();
+
      }
+
  cliente.setDatos(consulta);
+
  cargaDatos(cliente);
+
}catch(SQLException ex){
+
JOptionPane.showMessageDialog(null,"La consulta no ha devuelto filas");
+
}
+
+
}
+
  }
+
 
+
   
+
public static void main(String []s){
+
try{
+
conexion = new Conexion();
+
}catch(SQLException e){
+
JOptionPane.showMessageDialog(null,"Error en conexion en bd "+e.getMessage());
+
}catch (ClassNotFoundException e){
+
JOptionPane.showMessageDialog(null,"Error en BD" +e.getMessage());
+
}
+
      ICliente elCliente = new ICliente();
+
}
+
}//End class
+
 
+
</source>
+

Última revisión de 11:57 14 feb 2012


100px

Documentación inicial

Java

Entorno de desarrollo Java

Referencias online

JDK

JRE

Sintaxis básica

Eclipse

Ejemplo 1

Entorno gráfico swingx

Layout GridBagLayout

Eventos

  • Un 'evento' es una acción o suceso que ocurre sobre un objeto que es sensible a dicha acción
  • Ejemplo de un evento
    • Hacer un click sobre un botón
    • pasar el cursor del ratón por encima de un elemento de mi pantalla
    • Un porceso le envía una señal a la impresora de que quiere imprimir
  • Es típico de la programación visual que esté conducida por eventos
    • Ahora el programa ya no tiene una secuación lógica de instrucciones para se ejecutada, no sigue un camino marcado
  • El programa presenta una interfaz gráfica una serie de elementos gráficos u objetos
  • El usuario de la aplicación en función de lo que quiera hacer realiza acciones en la interfaz gráfica
  • La interfaz gráfica identifica esas acciones o eventos y ejecuta código asociado a dichas acciones
  • Por lo tanto la ejecución del programa dependerá de los eventos que se vayan produciendo, el programa se presenta como una interfaz que está esperando a que ocurran enventos, ocurre un evento ejecuto un código asocido de alguna manera a dicho evento y de nuevo el programa se queda en estado de espera a que ocurra otro evento

Delegación de eventos en Java

No todos los entornos de desarrollo gestionan los eventos de igual manera. Java realiza la gestión de eventos delegando, y se conoce como 'delegacion de eventos' por qué se conoce con este nombre: hasta ahora vemos en este escenario dos elementos: el evento que se produce El objeto sobre el que se produce el evento que es quien va a generarlo esta frase no nos debe confundir. Efectivamente el evento se ha producido por que un usuario a realizado una acción sobre un objeto, es el usuario el que ha originado o provocado el evento, pero en el sistema el evento lo va a generar el objeto sobre el que se ha producido.pongamos un ejemplo para verlo.

Evento, y source del evento

Tengo un botón de timbre. una persona (usuario) llega a la puerta y presiona el botón del timbre (objeto) y el timbre provoca un ruido (evento) Java evento1.jpg.png Podemos analizar el escenario y observar:

  • 1 elemento externo a mi programa
(usuario) quien ha provocado el evento 
  • dentro del programa tendo dos elemntos
    • Evento que se produce suena el timbre
    • Objeto source de dicho evento el bóton genera un sonido de timbre'
  • Ahora pueden ocurrir dos cosas: siguiendo con el ejemplo (suponemos que es el timbre de una casa)
    • Que no hay nadie dentro de casa y el sonido se pierde, nadie lo oye y por lo tanto nadie hace nada
    • Que hay una persona dentro de casa y está escuchando oye el sonido del tiembre y actua abriendo la puerta
    • Que hay una persona en casa pero no está escuchando ya que por ejemplo lleva cascos (En realidad es igual que el caso primero, es como si no hubiera)
  • Entonces aparece el concepto de delegación de eventos
    • El botón ha generado el evento ring y este delega el evento en un escuchador
      • si hay un objeto escuchando a ese objeto actuará en consecuencia
      • si no hay objeto escuchando o lo hay pero no lo hace a ese objeto, el evento se pierde, (nadie actúa ante él)
Por lo tanto tenemos tres objetos
El Source
El Event
El Listener