3. Aplicando el objeto jtable en un caso específico.
Recuerda asignar un nombre de variable a cada uno de los objetos, para efectos del ejercicio
de este proyecto se ha asignado los siguientes nombres de variable a los objetos, ver cuadros
de color negro.
Codificación. Lo que más nos gusta hacer.
package clasesmetodos;
import javax.swing.JOptionPane;
import javax.swing.table.*;
import javax.swing.*;
jtxtalumno
4. public class Jtable extends javax.swing.JFrame { //clase principal
double nbI, nbII, nproyecto, promedio;
String estado; int total;
DefaultTableModel dm;
DefaultTableModel contenedor=new DefaultTableModel();DefaultTableModel dm;
DefaultTableModel contenedor=new DefaultTableModel();
public Jtable() {
initComponents();
String titulos[]={"Apellidos y Nombres", "I Unidad", "II Unidad",
“Proyecto","Promedio","Turno"};
contenedor.setColumnIdentifiers(titulos);
this.jtable.setModel(contenedor);
this.setLocationRelativeTo(this);
}
public void desactivar()//método para desactivar los objetos
{
this.jtxtalumno.setEnabled(false);
this.jtxtunidadI.setEnabled(false);
this.jtxtUnidadII.setEnabled(false);
this.jtxtProyecto.setEnabled(false);
this.jcboSeccion.setEnabled(false);
}
public void activar()//método para activar los objetos
{
this.jtxtalumno.setEnabled(true);
this.jtxtunidadI.setEnabled(true);
this.jtxtUnidadII.setEnabled(true);
this.jtxtProyecto.setEnabled(true);
this.jcboSeccion.setEnabled(true);
}
Declaración de
variables y
definición de
modelos para
trabajar con la
tabla.
Inicializamos
los títulos de la
tabla en el
constructor de
la clase.
Método que
me permite
desactivar los
objetos.
Método que
me permite
activar los
objetos.
5. public void limpiar()//método para limpiar e inicializar los objetos
{
this.jtxtalumno.setText("");
this.jtxtunidadI.setText("");
this.jtxtUnidadII.setText("");
this.jtxtProyecto.setText("");
this.jcboSeccion.setSelectedIndex(0);
}
private void jbtnAgregarActionPerformed(java.awt.event.ActionEvent evt) {
String datos[]=new String[7]
boolean verificardatos;
nbI=Double.parseDouble(this.jtxtunidadI.getText());
nbII=Double.parseDouble(this.jtxtUnidadII.getText());
nproyecto=Double.parseDouble(this.jtxtProyecto.getText());
verificardatos=this.jtxtalumno.getText().equals("")||this.jtxtUnidadII.
getText().equals("") ||this.jtxtProyecto.getText().equals("");
verificardatos=verificardatos||this.jcboSeccion.getSelectedIndex()==0;
if(!verificardatos)
{
promedio=(nbI+nbII+nproyecto)/3;
if(promedio>=11){
estado="Aprobado";
}else{
estado="Desaprobado";
}
datos[0]=this.jtxtalumno.getText();
datos[1]=(String)this.jcboSeccion.getSelectedItem();
datos[2]=this.jtxtunidadI.getText();
datos[3]=this.jtxtUnidadII.getText();
datos[4]=this.jtxtProyecto.getText();
datos[5]=String.valueOf(promedio);
datos[5]=String.valueOf(estado);
contenedor.addRow(datos);
}else{
JOptionPane.showMessageDialog(null, "Falta algún Dato");
}
total=this.jtable.getRowCount();
this.jtxtCantEstud.setText(String.valueOf(total));
limpiar();//limpiamos las cajas de texto e inicializamos el combo al índex 0
desactivar();//desactivamos los objetos para obligar al usuario a presionar el botón nuevo
para ingresar nuevos valores
this.jbtnAgregar.setEnabled(false);
this.jbtnNuevo.setEnabled(true);
this.jbtnEliminar.setEnabled(true);
this.jbtnLimTabla.setEnabled(true);
}
Método que
me permite
limpiar los
objetos y
reinicializar la
posición del
combo
Programación
del botón
agregar un
elemento a la
tabla.
6. private void jbtnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
int fila;
fila=jtable.getSelectedRow();
if(fila>=0)
{
contenedor.removeRow(fila);
}else{
JOptionPane.showMessageDialog(null, "Selecciona una fila para eliminar");
}
total=contenedor.getRowCount();
this.jtxtCantEstud.setText(String.valueOf(total));
}
private void jbtnLimTablaActionPerformed(java.awt.event.ActionEvent evt) {
int filas;
try{
filas=contenedor.getRowCount();
for (int i = 0;filas>i; i++) {
contenedor.removeRow(0);
}
} catch(Exception e) {
JOptionPane.showMessageDialog(null, "Error al limpiar la tabla");
}
}
private void jbtnNuevoActionPerformed(java.awt.event.ActionEvent evt) {
activar();
limpiar();
this.jbtnAgregar.setEnabled(true);
this.jbtnNuevo.setEnabled(false);
this.jbtnEliminar.setEnabled(false);
this.jbtnLimTabla.setEnabled(false);
// TODO add your handling code here:
}
//Método que permite manipular la tabla para realizar la búsqueda.
private void buscar(String consulta, JTable jtable){
dm = (DefaultTableModel) jtable.getModel();//recuerda que la variable dm se creó en la parte
superior de la clase.
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<>(dm);
jtable.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(consulta));
//private TableRowSorter trsFiltro;
}
Programación
del botón
eliminar, para
eliminar un
elemento de la
tabla.
Programación
del botón
limpiar Tabla,
para limpiar
todos los
elemento de la
tabla.
Programación
del botón
nuevo, para
limpiar todos
los elementos
de ingreso de
datos y activar
o desactivar
los objetos.
7. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
buscar(this.jtxtBuscar.getText(), this.jtable); //invocamos al método.
}
private void formWindowActivated(java.awt.event.WindowEvent evt) {
limpiar();
desactivar();
this.jbtnAgregar.setEnabled(false);
this.jbtnNuevo.setEnabled(true);
}
Bibliografía
chuwiki. (2015). Obtenido de
http://chuwiki.chuidiang.org/index.php?title=JTable:_Ordenar_y_filtrar_filas
Merino, F. (2016). linuxgx. Obtenido de https://linuxgx.blogspot.pe/2016/08/filtrar-datos-de-
un-jtable-partir-de.html
Código que se
ejecutará
cuando se
active el
formulario.