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í
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: