프로젝트의 저장소 제품을 관리하는 응용 프로그램을 빌드하고 있습니다. 나는 문제에 직면하고있어 정말 그것을 해결하기 위해 당신의 생각이 필요합니다.JTable의 각 행에 다른 이미지 표시
DefaultTableCellRenderer를 사용하여 기본 화면에서 제품 기본 정보 테이블에 이미지를 성공적으로 보여줍니다. 하지만 모든 제품에 대해 1 개의 이미지 만 표시 할 수 있습니다. 각 제품마다 이미지가 다르므로 제품 기본 정보 JTable의 각 행마다 다른 이미지를 표시해야합니다.
여기 내 작품이 있습니다.
이class ImageRenderer extends DefaultTableCellRenderer {
JLabel lbl = new JLabel();
ImageIcon icon = new ImageIcon("./src/comicbookandgamingzone/productpicture/NFS-Shift-2-Unleashed-Limited-Edition-Revealed-2.jpg");
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
lbl.setText((String) value);
lbl.setIcon(icon);
lbl.setBounds(0, 0, 100, 100);
return lbl;
}
}
class ProductTableModel extends AbstractTableModel{
String[] colname = {"ID","Picture","Name","Cost","In stock"};
ArrayList<Product> list;
public ProductTableModel(ArrayList<Product> prolist){
this.list=prolist;
}
public String getColumnName(int col){
return colname[col];
}
@Override
public int getRowCount() {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
return list.size();
}
@Override
public int getColumnCount() {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
return colname.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
switch(columnIndex){
case 0: return list.get(rowIndex).ID;
case 1: return list.get(rowIndex).Picture;
case 2: return list.get(rowIndex).Name;
case 3: return list.get(rowIndex).Cost;
case 4: return list.get(rowIndex).Stock;
default : return null;
}
... 그리고 쇼 결과 방식의 사용자 정의 제품 기본 정보 테이블 모델은
public void ShowResult(ArrayList<Product> list){
tabProduct.setModel(new ProductTableModel(list));
tabProduct.getColumnModel().getColumn(1).setCellRenderer(new ImageRenderer());
tabProduct.setRowHeight(100);
}
이것은 :
이
내하는 DefaultTableCellRenderer 확장 클래스 내 SQL은 테이블 스크립트를 만듭니다. 데이터베이스에 제품 이미지의 경로를 저장합니다.create table ProductDetails
(
ProductID int identity (1,1) not null,
ProductTypeID int foreign key references ProductType(TypeID),
ProductName text,
ProductPicture text,
ProductCost float,
ProductPoint int,
ProductStock int,
primary key (ProductID)
)
고맙습니다.
당신은 항상 같은 이미지를 설정하는 : 렌더러는 위치와 무엇을해야 곳이 결정하는 테이블에 달려으로 stBounds를 사용하지 마십시오 S – nachokk
, 그것은 아무런 영향을 미치지 않습니다 크기 – MadProgrammer
'제품'과 그 '이미지'를 함께 묶는 것이 있습니까? –