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 VstTableItemModel?
Ja. Muss ich es hier posten ?
Nein, es wird nur machen es einfacher 😉

InformationsquelleAutor shan | 2012-09-24

Schreibe einen Kommentar