Я создаю приложение для управления продуктом магазина для моего проекта. Я столкнулся с проблемой, и мне действительно нужна ваша идея, чтобы решить эту проблему.Показать различные изображения для каждой строки в JTable
Я успешно показываю изображение в основной информационной таблице продукта на главном экране с помощью DefaultTableCellRenderer. Но я могу показать только 1 изображение для всего продукта. Каждый продукт имеет другое изображение, поэтому мне нужно отображать различное изображение для каждой строки в базовой информации о продукте JTable.
Вот некоторые части моей работы.
Это мой DefaultTableCellRenderer расширенный класс:
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);
}
Это мой скрипт SQL create table. Я сохраняю путь изображения продукта в базе данных
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)
)
Большое спасибо.
вы настраиваете всегда один и тот же образ: S – nachokk
Не используйте stBounds, это не имеет никакого эффекта, как это он к столу, чтобы определить, где рендер должен быть положение и при чем size – MadProgrammer
У вас есть что-то, что связывает «продукт» и его «образ» вместе? –