Ventana sencilla en JCreator



Para esta sencillas demostración, en donde el resultado final va hacer una ventana implementando la herencia, utilizaremos el IDE JCreator o si desean ejecutarlo en otro editor, por ejemplo Netbeans, solo creen las clases con sus respectivos nombres y la podran ejecutar.
Primero que todo vamos ver un poco de teoría, esto nos ayudara a ser mas claros y comprender mejor todo este asunto de programación. Voy a explicarles un poco de los componentes Swing de java que donde nos enfocaremos en este articulo.

Componentes de Swing

Componentes contenedores (sirven para contener y organizar otros componentes):
Controles Básicos  en java



CONTROLES ESPECIALIZADOS





Controles no interactivos (muestran algún tipo de información pero no interaccionan con el usuario)
                                        
     




Captura de eventos

          Para la captura de eventos Swing usa un esquema a similar a los callbacks pero utilizando clases en lugar de funciones
          Cada clase de captura de eventos (denominados event listeners) debe implementar una interfaz concreta en función del tipo de eventos que desea capturar
          Una vez implementado el listener, bastará con indicar éste al componente del cual deseamos capturar los eventos

           Existen ciertos event listeners que son comunes a todos los componentes:
·         FocusListener: captura eventos relacionados con la recepción o pérdida del foco
·         KeyListener: captura pulsaciones de teclado sobre el componente activo
·         MouseListener: captura la entrada o salida del cursor sobre un componente, así como pulsaciones de los botones
·         MouseMotionListener: captura movimientos del ratón sobre el componente
         Otros son específicos de algunos componentes:
·         ActionListener: captura cierto tipo de acción realizada sobre ciertos componente.
Por ejemplo, pulsar un botón, seleccionar un elemento en una lista desplegable o una opción en un menú
·         ChangeListener: registra los cambios sobre ciertos componente. Por ejemplo un cambio en el dato de un spinner, o un nuevo valor seleccionado en un slider
·         ItemListener: recoge el cambio de estado en un componente tipo on/off: check boxes, radio buttons y listas desplegables
·         ListSelectionListener: es un listener específico para detectar las selecciones múltiples realizadas en listas y tablas
·         WindowListener: permite recoger los eventos relacionados con las ventanas (cerrar,minimizar, maximizar, iconizar, etc.) en los frames, frames internos y cuadros de diálogo


Ejemplo de Herencia Aplicando interfaz gráfica

Implementaremos en una ventana que contiene 5 campos los cuales nos permitirá capturar datos desde unas cajas de texto, capturarlas en un objeto y posteriormente mostrarla si así lo deseamos.

Comencemos con la primera clase.

public class Persona {
            private String dir, nom, ape;
            private int eda;
            public Persona( )
            {}
            public Persona( String mape,String mnom, String mdir, int meda ) {
                        asignarEda(meda);
                        asignarApe(mape);
                        asignarNom(mnom);
                        asignarDir(mdir);          
            }
   
    public void asignarEda(int meda){eda=meda;}
    public void asignarApe(String mape){ape=mape;}
    public void asignarDir(String mdir){dir=mdir;}
    public void asignarNom(String mnom){nom=mnom;}
   
    public int obtenerEda(){return eda;}
    public String obtenerApe(){return ape;}
    public String obtenerDir(){return dir;}
    public String obtenerNom(){return nom;}
    }



Después crear la clase persona o como ustedes la quieran llamar, codificamos la clase alumno, la cual hereda de la clase persona:

public class Alumno extends Persona{
            String esp;
            public Alumno()
            {}
    public Alumno(String mape,String mnom, String mdir, int meda, String mesp) {
            super(mape, mnom,  mdir,  meda);
            asignarEsp(mesp);
    }
   
    public void asignarEsp(String mesp){esp=mesp;}
    public String obtenerEsp(){return esp;}
}


Por último crear la clase ventana, para interactuar con el objeto instan-ciado de la clase alumno. A su vez programar los eventos asociados a los botones registrar y consultar, definida en la siguiente clase Ventana heredando de la clase JFrame (básica para diseño de la interfaz) y haciendo uso de la la clase ActionListener para activar los eventos sobre los botones definidos en la interfaz. Como se puede ver ha  continuación:


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Ventana extends JFrame implements ActionListener
{
JPanel JP1,JP2, JPF1,JPF2,JPF3;
JButton B1,B2,B3;
JLabel E1;
JTabbedPane tabbedPane;
JTextField c1,c2,c3,c4,c5;
Alumno x=new Alumno();

    public Ventana() 
    {   E1 = new JLabel("Swing");
    B1 = new JButton("Registrar");
    B2 = new JButton("Consultar");
    B3 = new JButton("Salir");
   
    JP1 = new JPanel();
    JP2 = new JPanel();
    
    JPF1 = new JPanel();
    JPF2 = new JPanel();
    tabbedPane = new JTabbedPane();
   
    JLabel l1=new JLabel("Apellido");
c1 =new JTextField(20);
JLabel l2=new JLabel("Nombre");
c2=new JTextField(20);
JLabel l3=new JLabel("Direccion");
c3 =new JTextField(30);
JLabel l4=new JLabel("Edad");
c4 =new JTextField(5);
JLabel l5=new JLabel("Profesion");
c5 =new JTextField(20);

JPF1.setLayout(new BoxLayout(JPF1,BoxLayout.PAGE_AXIS));

JPF1.add(l1);
JPF1.add(c1);
JPF1.add(l2);
JPF1.add(c2);
JPF1.add(l3);
JPF1.add(c3);
JPF1.add(l4);
JPF1.add(c4);
JPF1.add(l5);
JPF1.add(c5);

tabbedPane.addTab("Persona",null,JPF1,  "Datos Personales");

   
    JP1.setLayout(new FlowLayout(FlowLayout.CENTER));
    JP1.add(tabbedPane);
   
    JP2.setLayout(new FlowLayout(FlowLayout.CENTER));
    JP2.add(B1);
    JP2.add(B2);
    JP2.add(B3);
   
    
    getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.PAGE_AXIS));
   
    getContentPane().add(E1);
    getContentPane().add(JP1);
    getContentPane().add(JP2);
   
           
B1.addActionListener(this);
B2.addActionListener(this);
B3.addActionListener(this);


pack();
//setSize (300,120);
    setVisible(true);
    setTitle("Programaion Orientada a Objetos");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo (null);
   this.setResizable (false);
//repaint();   
    }
     public static void main(String args[])
    {
   Ventana p =new Ventana();
   p.setVisible (true); 
  
       
    }
    
    
    public void limpiar()
    {c1.setText("");
     c2.setText("");
     c3.setText("");
     c4.setText("");
     c5.setText("");
    }
    
    public void cargar()
    {
    c1.setText(x.obtenerApe());
    c2.setText(x.obtenerNom());
    c3.setText(x.obtenerDir());
    c4.setText(String.valueOf(x.obtenerEda()));
    c5.setText(x.obtenerEsp());
    }
    
    public void actionPerformed(ActionEvent e)
    {
   
    if (e.getSource()==B1)
    {   if (tabbedPane.getSelectedIndex()==0)
    { x.asignarApe(c1.getText());
    x.asignarNom(c2.getText());
    x.asignarDir(c3.getText());
    x.asignarEda(Integer.parseInt(c4.getText()));
    x.asignarEsp(c5.getText());
    limpiar();
        }
    }
    
    if (e.getSource()==B2)
    {
      cargar();
               
    }

  
    if (e.getSource()==B3)
    {          
         System.exit(0);
    }   
   
    } 


}
Link descarga: Aquí








0 comentarios: