ProductListPage에 있는 JTable에 실제 데이터를 나타내보자!
Jtable table = new JTable(productModel = new ProductModel());
Jscroll scroll = new JScrollPane(table);
DB(Product 테이블)
↓
ProductDAO →List<Product>
↓
ProductModel (AbstractTableModel상속)
↓
JTable ←new JTable(model)
↓
화면에 테이블로 출력됨
// JTable은 껍데기이므로, 이 모델을 참조해서 데이터를 출력함
public class ProductModel extends AbstractTableModel {
ProductDAO productDAO;
List<Product> list;
// 컬럼 제목 정의
String[] column = {
"topcategory_id", "top_name", "subcategory_id", "sub_name", "product_id",
"product_name", "price", "discount", "brand", "introduce", "detail"
};
public ProductModel() {
productDAO = new ProductDAO(); // DB 연동용 DAO 생성 (얘가 데이터 가지고 있음)
list = productDAO.selectAll(); // 모든 상품 목록 가져오기 (얘가 리스트로 저장)
}
@Override
public int getRowCount() {
return list.size(); // 상품 개수만큼 행(row)
}
@Override
public int getColumnCount() {
return column.length; // 컬럼 수
}
@Override
public String getColumnName(int col) {
return column[col]; // 각 열의 제목
}
@Override
public Object getValueAt(int row, int col) { // 행(row)에 해당하는 Product 객체 꺼내기
Product product = list.get(row);
String value = null;
// 열(column)에 따라 표시할 값 선택
switch (col) {
case 0: value = Integer.toString(product.getSubcategory().getTopCategory().getTopcategory_id()); break;
case 1: value = product.getSubcategory().getTopCategory().getTop_name(); break;
case 2: value = Integer.toString(product.getSubcategory().getSubcategory_id()); break;
case 3: value = product.getSubcategory().getSub_name(); break;
case 4: value = Integer.toString(product.getProduct_id()); break;
case 5: value = product.getProduct_name(); break;
case 6: value = Integer.toString(product.getPrice()); break;
case 7: value = Integer.toString(product.getDiscount()); break;
case 8: value = product.getBrand(); break;
case 9: value = product.getIntroduce(); break;
case 10: value = product.getDetail(); break;
}
return value; // 선택된 셀에 들어갈 값
}
}