TableModel (feat. 데이터를 직접 꺼낼 수 없는 JTable)

heeezni·2025년 6월 15일

Java GUI 프로젝트

목록 보기
19/20

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)

화면에 테이블로 출력됨

ProductModel

// 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;  // 선택된 셀에 들어갈 값
	}
}
profile
아이들의 가능성을 믿었던 마음 그대로, 이제는 나의 가능성을 믿고 나아가는 중입니다.🌱

0개의 댓글