Download Descargar

Document related concepts
no text concepts found
Transcript
ISTP: Manuel Seoane Corrales
Java Swing
PRÁCTICA Nº 07
Diseñe una aplicación utilizando Jtable para ingresar, eliminar, editar e inicializar los siguientes
datos: nombres, apellidos, edad y sexo como muestra la imagen.
PROCEDIMIENTO:
1. Crea un nuevo proyecto y un nuevo paquete con
el nombre practica07.
2. Clic derecho en el paquete creado, elegimos
nuevo JPanel Form de nombre PanelPrincipal con
distribución BoderLayout.
3. En el norte colocamos un panel llamado panNorte
con distribución BorderLayout.
4. En el centro de panNorte colocamos un nuevo
panel con el nombre panDatos con distribución
GridLayout de 2 filas y 4 columnas para los datos
de nombre, edad, apellido y sexo.
5. En el sur del panel panNorte colocamos un nuevo
panel llamado panBotones con GridLayout de 1
fila y 4 columnas para colocar los botones.
6. En el centro del PanelPrincipal colocamos un
nuevo panel llamado panTabla con BorderLayout.
7. En el centro del panel panTabla colocamos un
JScrollPane y encima un JTable de nombre
miTabla.
Observe la distribución de los componentes y los
nombres utilizados en ellos.
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
8. Ahora vamos a crear una clase propia de nombre Datos. Clic derecho en el paquete
practica07 y elegimos nueva Java class.
9. Escribimos el contenido de esta clase.
public class Datos{
String nombre;
String apellido;
int edad;
String sexo;
public Datos(String nombre, String apellido, int edad, String sexo) {
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
this.sexo = sexo;
}
}
10. Para el código de los métodos get-set, Netbeans lo genera de la siguiente manera:
a) Clic derecho en la clase Datos.
b) Elige Refactor.
c) Luego realiza clic en encapsúlate fields.
d) En ventana que presenta realice un clic en Select All y luego en Refactor.
e) Finalmente Netbenas habrá generado el código todos los métodos get y set de los
atributos seleccionados.
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
Java Swing
Código get y set generado
automáticamente a través de la
ventana anterior.
Con esto hemos terminado la creación de nuestra clase propia Datos.
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
11. Debido a que nuestra tabla necesita de un objeto modelo para administrar su
contenido, vamos a declarar e instanciar dicho modelo. Para esto, vamos al código del
PanelPrincipal y completamos lo siguiente:
public class PanelPrincipal extends javax.swing.JPanel {
DefaultTableModel miModelo;
String[] cabecera= {"Nombre", "Apellido","Edad","Sexo"};
String[][] data = {};
/** Creates new form PanelPrincipal */
public PanelPrincipal() {
initComponents();
miModelo=new DefaultTableModel(data,cabecera);
miTabla.setModel(miModelo);
}
Observe que nuestra tabla (miTabla) le especificamos que utilice el modelo instanciado
con los títulos de tabla y con su contenido vacío.
12. Ahora vamos a programar la acción del botón Ingresar: doble clic en el botón Ingresar
del PanelPrincipal y digita el siguiente código.
private void btnIngresarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ingresar();
}
void ingresar(){
// lee los datos de los objetos gui
Datos d=new Datos(leeNombre(),
leeApellido(),
leeEdad(),
leeSexo());
// coloca los datos leidos en una fila
Object[] fila = { d.getNombre(),
d.getApellido(),
d.getEdad(),
d.getSexo()
};
// agrega nueva fila con datos obtenidos
miModelo.addRow(fila);
// borra datos ingresados
borrar();
}// fin del método ingresar
String leeNombre(){
return txtNombre.getText();
}
String leeApellido(){
return txtApellido.getText();
}
int leeEdad(){
return Integer.parseInt(txtEdad.getText());
}
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
String leeSexo(){
return cboSexo.getSelectedItem().toString();
}
void borrar(){
txtNombre.setText("");
txtApellido.setText("");
txtEdad.setText("");
cboSexo.setSelectedIndex(0);
txtNombre.requestFocus();
}
13. Ahora regresamos al diseño para programar la acción del botón Eliminar.
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
eliminar();
}
void eliminar(){
// obtiene numero de filas seleccionadas
int filas=miTabla.getSelectedRowCount();
if (filas==0) // no hay filas seleccionadas
JOptionPane.showMessageDialog(this,
"Debe seleccionar una o más filas!");
else {
// una o mas filas seleccionadas
int fila;
do {
// obtiene fila seleccionada
fila=miTabla.getSelectedRow();
// remueve fila obtenida
miModelo.removeRow(fila);
} while (fila>=0);
// mientras haya filas seleccionadas
}// fin del else
}// fin del método eliminar
14. Regresamos al diseño para programar la acción del botón Editar.
private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
editar();
}
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
void editar() {
// obtiene numero de filas seleccionadas
int filas = miTabla.getSelectedRowCount();
if (filas==0)
JOptionPane.showMessageDialog(this,
"Debe seleccionar una fila!");
else {
// obtiene fila seleccionada
int fila = miTabla.getSelectedRow();
// obtiene valores de la tabla y los edita
setNombre(miTabla.getValueAt(fila,0).toString());
setApellido(miTabla.getValueAt(fila,1).toString());
setEdad(miTabla.getValueAt(fila,2).toString());
setSexo(miTabla.getValueAt(fila,3).toString());
}// fin del else
}// fin del método editar
15. Regresamos al diseño para programar la acción del botón Inicializar.
private void btnInicializarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
inicializar();
}
void inicializar(){
// obtiene numero de filas de la tabla
int filas = miTabla.getRowCount();
// remueve todas las filas de la tabla
for (int fila=0; fila<filas; fila++)
miModelo.removeRow(0);
// borra datos
borrar();
}// fin del método inicializar
16. Finalmente creamo un frame. Clic derecho en el paquete practica07 elegimos nuevo
JFrame Form y le asignamos el nombre Principal y en su propiedad title “Jtable, Default
TableModel” y le colocamos BorderLayaout, luego ingresamos el siguiente codigo.
public class Principal extends javax.swing.JFrame {
static int w=500, h=400;
/** Creates new form Principal */
public Principal() {
initComponents();
add(new PanelPrincipal());
setSize(w,h);
setLocation((getToolkit().getScreenSize().width - w)/2,
(getToolkit().getScreenSize().height - h)/2);
}
Lic. Bernardo C. Hermitaño Atencio