So legen Sie ein benutzerdefiniertes Objekt in einer JTable-Zeile fest
Ich sollte dies zuerst sagen, es geht NICHT um das Rendern einer Tabellenzelle.
Hier ist das TableModel, das ich mit einem 2D-Array auf der Basis von a aufbaueUser
Objekt in meiner 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);
Mein Problem ist, wie bekomme ich eineUser
Objekt zurück, unter Verwendung der ausgewählten Zeile in der Tabelle. Beachten Sie, dass ich kein neues erstellen kannUser
Objekt und füllen Sie es mit den Zeilendaten. Ich muss das abgefragt bekommenUser
Objekt (Objekte inuserList
). Gibt es eine Möglichkeit, ein Objekt mit einer Tabellenzeile festzulegen?
Hier ist meinVstTableItemModel
Klasse.
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];
}
}