Para el manejo de datos con JList y JTable debemos hacer uso
de modelos. En el caso de las listas vamos a
necesitar hacer uso de la clase
DefaultListModel y para las tablas usaremos DefaultTableModel.
Vamos a tener que importar las siguientes librerías:
import javax.swing.DefaultListModel; // En caso de JList
import javax.swing.table.DefaultTableModel; // En caso de JTable
import javax.swing.DefaultListModel; // En caso de JList
import javax.swing.table.DefaultTableModel; // En caso de JTable
Listas
Primero que nada debemos crear nuestro modelo para luego
asignárselo a nuestra lista. Yo recomiendo declararlo como atributo de clase y
de forma estática, para que sufra las modificaciones desde cualquier parte del
programa.
Su implementación es la siguiente:
static DefaultListModel modeloLista = new DefaultListModel(); //Atributo de clase
static DefaultListModel modeloLista = new DefaultListModel(); //Atributo de clase
// Setear el modelo a nuestro componente lista deberíamos hacerlo
debajo del initComponents(), en el constructor de la ventana.
lista.setModel(modelolista);
lista.setModel(modelolista);
Vamos ver algunas acciones que podemos hacer con el:
modeloLista.addElement("Hola"); //Agrega un elemento String al modelo
modeloLista.clear(); // Quita todos los elementos del modelo
modeloLista.get(1); //Toma un elemento en la posición indicada.
modeloLista.addElement("Hola"); //Agrega un elemento String al modelo
modeloLista.clear(); // Quita todos los elementos del modelo
modeloLista.get(1); //Toma un elemento en la posición indicada.
*Aclaración: debemos tener en cuenta que lo que recibe o lo
que devuelve son objetos de tipo Object, por lo que si se hace un get() debemos
hacer un String.valueOf(elemento), donde elemento es lo que devolvió el get(),
y para pasar a un tipo de dato primitivo debemos hacer un parseInt ,
parseDouble o del tipo de dato que queramos, de lo que devuelve el valueOf().
Luego del manejo de los datos (añadir, remover, etc) deberíamos
refresacar el componente para ver los cambios que sufrió, para hacer esto
debemos hacer lo siguiente:
lista.updateUI();
//Donde lista no es el modelo sino nuestro componente.
Algunos métodos de nuestro componente lista, nuestro objeto
de JList(NO EL MODELO):
lista.getSelectedValue(); // Devuelve como Object el
elemento seleccionado
lista.getSelectedIndex(); // Devuelve como int el índice del elemento seleccionado
lista.getSelectedIndex(); // Devuelve como int el índice del elemento seleccionado
Tablas
Primero que nada debemos crear nuestro modelo para luego
asignárselo a nuestra tabla. Yo recomiendo declararlo como atributo de clase y
de forma estática, para que sufra las modificaciones desde cualquier parte del
programa.
Su implementación es la siguiente:
static DefaultTableModel modeloTabla = new DefaultTableModel(); //Atributo de clase
Su implementación es la siguiente:
static DefaultTableModel modeloTabla = new DefaultTableModel(); //Atributo de clase
// Setear el modelo a nuestro componente tabla deberíamos hacerlo
debajo del initComponents(), en el constructor de la ventana.
modeloTabla = (DefaultTableModel) tabla.getModel();
La declaración del modelo es distinta ya que, si por medio del diseñador hicimos la tabla con las columnas a nuestro gusto, si llegamos a setearle el modelo como en la lista perderíamos todo ese diseño.
modeloTabla = (DefaultTableModel) tabla.getModel();
La declaración del modelo es distinta ya que, si por medio del diseñador hicimos la tabla con las columnas a nuestro gusto, si llegamos a setearle el modelo como en la lista perderíamos todo ese diseño.
Supongamos que tenemos una tabla de contactos con 2 columnas, “Nombre” , “Apellido”, y queremos agregarle un contacto nuevo. Esto se realiza de la siguiente manera:
Object[] fila = new Object[2];
fila[0] = "Martin";
fila[1] = "Gigena";
Object[] fila = new Object[2];
fila[0] = "Martin";
fila[1] = "Gigena";
modeloTabla.addRow(fila);
*Aclaración: como Object es la clase mayor en la jerarquía de
clases de java, le podemos asignar cualquier tipo de dato a cada elemento del
vector.
Para limpiar una tabla debemos hacerlo mediante un for de la
siguiente forma:
for (int i
= tabla.getRowCount()-1; i >= 0; i--) {
modeloTabla.removeRow(i); //El método removeRow nos sirve para eliminar
una fila de nuestra tabla
}
Para tomar un valor de la tabla se realiza con el siguiente método:
modeloTabla.getValueAt(i , j);
Luego del manejo de los datos (añadir, remover, etc) deberíamos
refresacar el componente para ver los cambios que sufrió, para hacer esto
debemos hacer lo siguiente:
tabla.updateUI();
//Donde tabla no es el modelo sino nuestro componente.
Algunos métodos de nuestro componente tabla, nuestro objeto
de JTable(NO EL MODELO):
tabla.getRowCount()// Devuelve la cantidad de filas que
tiene nuestra tabla
tabla.getSelectedRow();// Devuelve como int el índice del elemento seleccionado
tabla.getSelectedRow();// Devuelve como int el índice del elemento seleccionado
Este comentario ha sido eliminado por el autor.
ResponderEliminarExcelente justo lo que necesitaba para mantener el formato dado en el diseñador, muchas gracias!
ResponderEliminar.add agrefa de uno x uno y yo lo hago desde un boton]
ResponderEliminary se me sobreescriobe
alguna ayuda
miLista.getColumnModel().getColumn(indexColumn).setMaxWidth(pixels);
ResponderEliminarPARA QUE ES EL dEFAULlISTMODEL
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminar¿Cómo pasar datos de un jTable a un jList cuando seleccione una fila?
ResponderEliminar