Debo decir esto primero, esto NO se trata de Renderizar una celda de tabla.Cómo establecer un objeto personalizado en una fila JTable
Aquí está el TableModel que estoy construyendo usando una matriz 2D basada en un objeto User
en mi base de datos.
List<User> userList = userManagerService.getAllUsers();
/* String[] col_user = {"Username", "Name", "Phone", .... } */
String[][] data = new String[userList.size()][col_user.length];
int i = 0;
for (User user : userList) {
String[] userdata = new String[col_user.length];
userdata[0] = user.getUserUsername();
userdata[1] = user.getUserName();
userdata[2] = user.getUserPhone();
userdata[3] = user.getUserNic();
userdata[4] = user.getUserAddress();
userdata[5] = user.getUserEmail();
data[i++] = userdata;
}
VstTableItemModel tiModel = new VstTableItemModel(data, col_user);
dataTable.setModel(tiModel);
Mi problema es cómo puedo obtener un objeto User
atrás, utilizando la fila seleccionada en la tabla. Tenga en cuenta que no puedo crear un nuevo objeto User
y rellenarlo con los datos de la fila. Debo obtener el objeto consultado User
(objetos en userList
). Entonces, ¿hay alguna manera de establecer un Objeto con una fila de tabla?
Aquí está mi clase VstTableItemModel
.
public class VstTableItemModel extends AbstractTableModel {
ArrayList<Object[]> data;
String[] header;
public VstTableItemModel(Object[][] obj, String[] header) {
this.header = header;
data = new ArrayList<Object[]>();
for (int i = 0; i < obj.length; ++i) {
data.add(obj[i]);
}
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return header.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data.get(rowIndex)[columnIndex];
}
@Override
public String getColumnName(int index) {
return header[index];
}
}
¿Puede modificar el 'VstTableItemModel'? – MadProgrammer
Sí. ¿Necesito publicarlo aquí? – shan
No, simplemente lo hará más fácil;) – MadProgrammer