2011-01-25 15 views

Respuesta

1

¿Has probado addMouseListener()? Espero que estés a punto de usar Swing's JTable.

+0

sí, estoy usando Swing's y no, no he intentado addMouseListener. lo intentaré ahora ... gracias. – Cristian

+0

esto es un poco confuso, ¿podría dar algunos consejos o algunos enlaces? He estado buscando y sin resultado. Solo quiero agregar la fila y columna de jTable CELL seleccionada en jLabel ..... – Cristian

+0

No creo que sea una buena forma de abordar el problema. El MouseEvent no será tan fácil de convertir a una columna y fila. Ver la respuesta de Develman. – jzd

17

Puede utilizar los métodos siguientes en el JTable para recuperar fila y columna de la celda seleccionada:

int rowIndex = table.getSelectedRow(); 
int colIndex = table.getSelectedColumn(); 

y añadir un SelectionListener a la mesa para coger el evento cuando se selecciona la tabla.

+2

+1, excepto que ListSelectionListener se agrega a ListSelectionModel, no a JTable. – camickr

+6

También podría agregar un ListSelectionListener al ColumnModel de JTable en caso de que la fila seleccionada permanezca igual pero la columna seleccionada cambie: table.getColumnModel(). GetSelectionModel(). AddListSelectionListener (...); – Uhlen

32

La respuesta existente funciona, pero hay un método alternativo que puede funcionar mejor si no está habilitando la selección de celda. Dentro de su MouseListener, hacer algo como esto:

public void mouseClicked(java.awt.event.MouseEvent event) { 
    int row = theTable.rowAtPoint(event.getPoint()); 
    int col = theTable.columnAtPoint(event.getPoint()); 
    // ... 
+0

Apoyos para esta respuesta. getSelectedRow() o getSelectedColumn() no funcionan cuando se usa el clic derecho. – Jesus

+0

Como (casi) todas las "soluciones" de Java Swing, sorcks: Sucks, pero funciona. – Felype

3

Se está trabajando para mí !!!

jTable1.addMouseListener(new java.awt.event.MouseAdapter() { 
@Override 
public void mouseClicked(java.awt.event.MouseEvent evt) { 
    int row = jTable1.rowAtPoint(evt.getPoint()); 
    int col = jTable1.columnAtPoint(evt.getPoint()); 
    if (row >= 0 && col >= 0) { 


    } 
} 
}); 
0

He encontrado que cuando las columnas se ocultan/reordenado columnAtPoint devuelve el índice de la columna visible, que no es lo que necesitaba. El código que funcionó para mí es

int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint())); 
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint())); 
Cuestiones relacionadas