valores una sirve seleccionada que para obtener los getvalueat getselectedrow getmodel fila datos como java swing jtable

una - Java Obteniendo valor de JTable(por fila)



getvalueat para que sirve (5)

Me gustaría obtener el valor del Jtable, y lo probé usando el getvalueat. Sin embargo, cada vez que trato de obtener el valor de JTable solo obtengo el valor de la primera columna de la fila seleccionada, necesito obtener todo el valor del Jtable que seleccioné ¿Puedes ayudarme con esto?

here is my code: class GetTableValue implements ActionListener{ public void actionPerformed(ActionEvent e){ AbstractButton button = (AbstractButton)e.getSource(); if(e.getActionCommand().equals(button.getActionCommand)){ int row = table.getSelectedRow(); int col = table.getSelectedColumn(); Object data = (Object)table.getValueAt(row, col); JOptionPane.showMessageDialog(null, data); } } }

Este es mi evento de acción donde el valor de la tabla seleccionada se muestra en JOptionPane. Desafortunadamente, solo muestra un valor (que es el que ya seleccionó) y no toda la fila.

Este código es para mi Jbutton para llamar al evento de acción (ya excluí mi código de JTable ya que recupera el valor Jtable de mi base de datos)

ActionListener tableAction = new GetTableValue(); buttonEdit = new JButton("EDIT"); buttonEdit.addActionListener(tableAction);

el código es simple y simple, también busco al Sr. G (google) sobre un buen tutorial sobre ir a la fila, desafortunadamente no hay un buen tutorial para recuperar el valor Jtable (por fila).


Puede probar el siguiente código para obtener el valor de la fila seleccionada:

int selectedRow = jTableName.getSelectedRow(); selectedRow = jTableName.convertRowIndexToModel(selectedRow); String val1 = (String)jTableName.getModel().getValueAt(selectedRow, 0); String val2 = (String)jTableName.getModel().getValueAt(selectedRow, 1);



private void jTable1MousePressed(java.awt.event.MouseEvent evt) { int selectedRow; ListSelectionModel rowSM = jTable1.getSelectionModel(); rowSM.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { ListSelectionModel lsm = (ListSelectionModel) e.getSource(); selectedRow = lsm.getMinSelectionIndex(); int numCols = jTable1.getColumnCount(); model = (DefaultTableModel) jTable1.getModel(); System.out.print(" /n row " + selectedRow + ":"); for (int j = 0; j < numCols; j++) { System.out.print(" " + model.getValueAt(selectedRow, j)); } } }); }

Usando esto puedes obtener el valor de toda la fila donde haces clic en una fila en particular.


getValueAt le devolverá el valor de la celda (en fila / col). A menos que su modelo de tabla lo soporte, no hay una manera conveniente (más allá de lo que está haciendo) de obtener toda la fila en una única solicitud.

Además, recuerde que si la tabla está ordenada o filtrada, los índices del modelo no coincidirán con la vista, debe convertirlos primero, usando convertRowIndexToModel y convertColumnIndexToModel

ACTUALIZAR

La única forma de getRow es si el modelo de tabla que está utilizando tiene un getRow (o equivalente). Sin saber cómo está almacenando los datos en el modelo de tabla, es casi imposible dar una respuesta precisa, pero una idea general sería ...

public class MyAwesomeTableModel extends AbstractTableModel { // All the usual stuff... public MyRowData getRowAt(int index) { ... } }

Ahora, MyRowData es la implementación de los datos de la tabla que has creado. Podría ser (preferiblemente) un único Object o, en el caso de DefaultTableModel una matriz de objetos.

class GetTableValue implements ActionListener{ public void actionPerformed(ActionEvent e){ AbstractButton button = (AbstractButton)e.getSource(); if(e.getActionCommand().equals(button.getActionCommand)){ int row = table.convertRowIndexToModel(table.getSelectedRow()); MyAwesomeTableModel model = (MyAwesomeTableModel)table.getModel(); MyRowData data = model.getRowAt(row); JOptionPane.showMessageDialog(null, data); } } }

Todo depende de cómo haya implementado su TableModel y cómo haya implementado sus datos de fila, pero esa es la opinión general


Si desea todos los valores de la fila seleccionada, intente con este código .

int row = jTable1.getSelectedRow(); int column = jTable1.getColumnCount(); for(int i = 0; i < column; i++) { System.out.println(jTable1.getValueAt(row, i)); }

Obtiene todos los valores para la fila seleccionada, sin importar cuántas columnas haya en jtable

Si quiere todos los valores de jtable, intente:

int row = jTable1.getRowCount(); int column = jTable1.getColumnCount(); for (int j = 0; j < row; j++) { for (int i = 0; i < column; i++) { System.out.println(jTable1.getValueAt(j, i)); } }

Sí, puede usar Object[] para almacenar los valores. Por ejemplo:

Object[] val = new Object[column]; for (int k = 0; k < val.length - 1; k++) { for (int j = 0; j < row; j++) { for (int i = 0; i < column; i++) { val[k] = jTable1.getValueAt(j, i); System.out.println(val[k]); } } }