Professional Documents
Culture Documents
y DefaultTableModel
La forma más sencilla de usar un JTable y tener toda su funcionalidad es instanciar
un DefaultTableModel y meterlo en el JTable, en el constructor
tabla.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int fila = tabla.rowAtPoint(e.getPoint());
int columna = tabla.columnAtPoint(e.getPoint());
if ((fila > -1) && (columna > -1))
System.out.println(modelo.getValueAt(fila,columna));
}
});
Una vez que sabemos la fila, debemos comprobar si es mayor que -1. El
método rowAtPoint() nos devuelve -1 si pinchamos en el JTable, pero fuera de cualquier fila.
Es el caso de que elJTable tenga un tamaño en pixels superior al que le corresponde según su
número de filas.
Una vez que tenemos la fila y sabemos que no es -1, es fácil a través del modelo obtener los
datos correspondientes. En este caso se escribe por pantalla con un System.out.prinln() el valor
de la fila y columna que se ha seleccionado.
En este ejemplo, hemos creado nuestro propio modelo de datos que hace que la columna 4
(los índices empiezan en cero) de la tabla sea editable y el resto no. Ahora simplemente
instanciamos el JTable usando este modelo y rellenamos los datos igual que antes
Para modificar esto, tenemos que crearnos nuestro propio modelo de Datos. La forma más
sencilla es heredar de DefaultTableModel y redefinir el método getColumnClass().
Una cosa curiosa de los Boolean, es que el JTable al pintarlos los pone como JCheckBox.
o bien
No conozco una forma inmediata de hacerlo, pero una posible solución es esta.
...
// Nos devuelve la posición en pixels de una celda en fila,columna
Rectangle r = tabla.getCellRect( fila, columna, true);