una seleccionar segun poner pintar las imagen filas fila condicion color celda cargar boton agregar java image swing jtable cell

seleccionar - JAVA: poner la imagen en la celda jTable



poner color a una fila de un jtable java (2)

Necesito mostrar una imagen en una de las celdas jTable.
Yo escribí esto:

class ImageRenderer extends DefaultTableCellRenderer { JLabel lbl = new JLabel(); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { lbl.setText((String) value); lbl.setIcon(new ImageIcon("/home/ariyan/Desktop/71290452.jpg")); return lbl; } }

y luego lo usó así:

jTable1.getColumn(0).setCellRenderer(new ImageRenderer());

Pero esto no funcionó
¿Como puedo hacer eso?

Gracias


Hmm: jTable1.getColumnModel().getColumn(0).setCellRenderer(new ImageRenderer()); ¿quizás?

Aquí está el extracto relevante de algún código de prueba rápida que armé para verificar rápidamente mi conjetura. Muestra íconos desde una carpeta (supone que todos los archivos en una carpeta son iconos, por lo que debe probarlo con algo así como un subdirectorio de tema de icono de XDG). Primero instale el modelo de tabla y luego agregue el representador de celda en las columnas:

class Renderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if(isSelected) { this.setBackground(table.getSelectionBackground()); this.setForeground(table.getSelectionForeground()); } else { this.setBackground(table.getBackground()); this.setForeground(table.getForeground()); } if(column == 0) { this.setText(list[row]); } else { // edit as appropriate for your icon theme this.setIcon(new ImageIcon("/usr/share/icons/default.kde4/16x16/apps/"+list[row])); } return this; } } class Model extends DefaultTableModel { @Override public boolean isCellEditable (int row, int column) { return false; } @Override public Object getValueAt (int row, int column) { return list[row]; } @Override public int getRowCount () { return list.length; } @Override public int getColumnCount () { return 2; } @Override public String getColumnName (int column) { return column == 0? "Name" : "Preview"; } @Override public Class<?> getColumnClass (int columnIndex) { return String.class; } } // edit base directory as appropriate for your icon theme of choice static String[] list=new File("/usr/share/icons/default.kde4/16x16/apps/").list();


JTable ya proporciona un renderizador predeterminado para las imágenes. Solo necesita decirle a la tabla qué tipo de datos hay en cada columna y elegirá el mejor representador:

a) anula el método getColumnClass () de JTable o TableModel para devolver la clase de datos en la columna. En este caso, debe devolver un Icon.class.

b) agregue un ImageIcon al modelo de tabla.

Ahora JTable usará el renderizador predeterminado de Icon para esa columna.