Dovrei dirlo prima, questo NON riguarda il rendering di una cella di tabella.Come impostare un oggetto personalizzato in una riga di JTable
Ecco il TableModel che sto costruendo utilizzando un array 2D basato su un oggetto User
nel mio DB.
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);
Il mio problema è come posso ottenere un oggetto User
indietro, utilizzando la riga selezionata nella tabella. Si noti che non è possibile creare un nuovo oggetto User
e popolarlo con i dati della riga. Devo ottenere l'oggetto User
interrogato (oggetti in userList
). Quindi, è il loro modo di impostare un oggetto con una riga della tabella?
Ecco la mia classe 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];
}
}
Sei in grado di modificare il 'VstTableItemModel'? – MadProgrammer
Sì. Devo postarlo qui? – shan
No, lo renderà più semplice;) – MadProgrammer