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: