Я создаю приложение для управления продуктом магазина для своего проекта. Я столкнулся с проблемой, и мне очень нужна ваша идея, чтобы решить ее.
Я успешно показываю изображение в таблице базовой информации о продукте на главном экране, используя 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 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)
)
Спасибо большое.
product
и егоimage
вместе? - person PM 77-1   schedule 11.09.2013