почему DefaultTableCellRenderer никогда не вызывается? - PullRequest
0 голосов
/ 12 ноября 2018

Я запутался, почему класс ImageRenderer () никогда не вызывается?Я проверил через консоль, и она не напечатала «Класс ImageRenderer здесь».Есть ли какой-то конкретный способ вызова класса?

...
private JTable createTable(BufferedImage[] images){
    String[] headers = {"Img1","Img2","Img3","Img4","img5" };
    final Object[][] allData = {images,images,images,images,images};
    int rows = 1, cols = 5;     
    Object[][] data = new Object[rows][cols];

    for(int row=0; row<rows; row++) 
        for(int col = 0; col < cols; col++) { 
            data[row][col] = allData[row][col];                 
        }

    //create the model
    DefaultTableModel model = new DefaultTableModel(data, headers) {            
        public Class getColumnClass(int col) {
            return allData[col][0].getClass();
            }                       
        public boolean isCellEditable(int row, int col){
            return allData[col][row] != allData[0][row];
            }                  
     };

     //create the table
     JTable table = new JTable(model);      

     // I called the "class ImageRenderer" here.    
     table.setDefaultRenderer(String.class, new ImageRenderer());
     ...
     ...
     } );        

    return table;            
    }

Я пытался вызвать этот класс, но не смог

class ImageRenderer extends DefaultTableCellRenderer {  
    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row, int column){
    super.getTableCellRendererComponent(table, value, isSelected,hasFocus, row, column);        

    //this code to test whether the "class ImageRenderer" get called or not
    System.out.println("The class ImageRenderer is here");

    setIcon(new ImageIcon((BufferedImage)value));
    setHorizontalAlignment(JLabel.CENTER);
    setText("");
    return this;
    }
 }
...