Wie Sie eine benutzerdefinierte Objekt in einer JTable-Zeile
Ich muss sagen, dieser erste, dieser ist NICHT zu Rendern ist eine Zelle der Tabelle.
Hier ist das TableModel, dass ich Gebäude mit einem 2D-array, basierend auf einer User
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 eine User
- Objekt zurück, mit dem die ausgewählte Zeile in der Tabelle. Beachten Sie, dass kann ich nicht machen, eine neue User
Objekt und füllen Sie es mit der Zeile Daten. Ich muss die abgefragt User
- Objekt(Objekte in userList
). Also, gibt es irgendwelche Möglichkeit ein Objekt mit einer Zeile in der Tabelle ?
Hier ist mein VstTableItemModel
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];
}
}
Sind Sie in der Lage, ändern Sie die
Ja. Muss ich es hier posten ?
Nein, es wird nur machen es einfacher 😉
VstTableItemModel
?Ja. Muss ich es hier posten ?
Nein, es wird nur machen es einfacher 😉
InformationsquelleAutor shan | 2012-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt der Aufspaltung der
User
Objekt, bevor Sie das Modell erstellt haben, fügen Sie es direkt in dem Modell und das Modell, um die Arbeit für Sie tun...Beispielsweise
Diese Weise, Sie sollten in der Lage sein, etwas zu tun, wie...
Nun, wenn Sie müssen...Sie können schnappen Sie sich einen der Benutzer, die darstellen, in eine bestimmte Zeile...
Wenn Sie
JTable
's Art API, dann können Sie einfachJTable. convertRowIndexToModel
konvertieren die Ansicht (dieJTable
) Zeilen-index der Modell-index.Danke. Das ist die Lösung, was ich will. nochmals vielen Dank...
I sollte hinweisen, die Zeile sorter-API (
TableRowSorter
) verwendet einen proxy-Modell bei der Sortierung, ist es nicht wirklich ändern Sie das Datenmodell, sondern ordnet die Indizes zwischen der Ansicht und dem ModellFroh, dass ich jemandem geholfen heute 😀
InformationsquelleAutor MadProgrammer