우선, 테이블 셀의 렌더링에 관한 것이 아니라, 이것에 대해 먼저 말해 두어야한다.JTable 행에 커스텀 오브젝트를 설정하는 방법
여기 내 DB에 User
개체를 기반으로하는 2D 배열을 사용하여 작성한 TableModel이 있습니다.
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);
내 문제는 내가 테이블에서 선택된 행을 사용하여, 다시 User
개체를 얻을 수있는 방법이다. 새 User
개체를 만들고 행 데이터로 채울 수는 없습니다. 질문 된 User
개체 (개체는 userList
)를 가져와야합니다. 그렇다면 테이블 행이있는 객체를 설정하는 방법은 무엇입니까?
여기 내 VstTableItemModel
클래스입니다. 예를 들어 당신이 모델을 만들기 전에 User
객체까지이 모델에 직접 추가 한 모델이 당신을 위해 일을 할 수 있도록하는 대신 분할의
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];
}
}
'VstTableItemModel'을 (를) 수정할 수 있습니까? – MadProgrammer
예. 내가 여기에 게시해야합니까? – shan
아니요, 더 쉽게 만들 수 있습니다;) – MadProgrammer