Отображение ImageIcons в jTables - PullRequest
0 голосов
/ 09 февраля 2011

Я пытался использовать приведенный ниже код для отображения ImageIcons в JTable. Но когда я запускаю программу, jTable просто отображает пустое место. p1.getPicture (); приходит из базы данных. Итак, в принципе, есть ли способ изменить приведенный ниже код так, чтобы был способ отобразить изображение на картинке ???

package Tables;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.table.AbstractTableModel;

import java.util.ArrayList;
import Entity.*;

public class ProfileTable extends AbstractTableModel{
    private static final long serialVersionUID = 1L;
    private int rowCount, colCount;
    private String[] columnNames = {"ClickId", "Name", "Gender", "Website", "Hobbies","Favourite Food", "DP"};
    private Object [][] data;
    private ImageIcon [][] icons;

    public ProfileTable(ArrayList<Profile> listOfObjects) {
        rowCount = listOfObjects.size();
        colCount = columnNames.length;
        data = new Object[rowCount][colCount];
        //icons = new ImageIcon[rowCount][colCount];
        for (int i = 0; i < rowCount; i++) {
           /*Copy an ArrayList element to an instance of MyObject*/
            Profile p1 = (Profile)(listOfObjects.get(i)); 
            p1.retrieveProfile();
            data[i][0] = p1.getClickId();            
            data[i][1] = p1.getFirstName();
            data[i][2] = p1.getGender();
            data[i][3] = p1.getWebsite();
            data[i][4] = p1.getHobbies();
            data[i][5] = p1.getFood();
            icons[i][6] = new ImageIcon(p1.getPicture());
        }              
    } 
    @Override
    public int getColumnCount() {
        // TODO Auto-generated method stub
        return colCount;
    }
    @Override
    public int getRowCount() {
        // TODO Auto-generated method stub
        return rowCount;
    }
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // TODO Auto-generated method stub
        return data[rowIndex][columnIndex];
    }

    public String getColumnName(int col) {
        return columnNames[col];
    }
}

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

Переопределить getColumnClass в TableModel, чтобы вернуть ImageIcon для 6-го столбца:

@Override
public Class getColumnClass(int columnIndex) {
    if(columnIndex == 6){
        return ImageIcon.class;
    }
    return Object.class;
}
0 голосов
/ 10 февраля 2011

Использовать это проще, но установить значок для всех строк в столбце, но вы всегда можете изменить его для нужной ячейки:

public Class TableRender extend Jtable{
private void setComboColumn(JTable table, TableColumn Column,
            String filepath) {
        ImageIcon icon = new ImageIcon(filepath);
        sportColumn.setCellEditor(new DefaultCellEditor(icon));
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setToolTipText("icon");
        Column.setCellRenderer(renderer);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...