Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender" rel="nofollow noreferrer"><em>default renderer</em></a> knows how to display both strings and icons. All you have to do is ensure that your <code>TableModel</code> returns the correct class from <code>getColumnClass()</code>, <code>String.class</code> and <code>Icon.class</code>, respectively. Examples may be found <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender#eg" rel="nofollow noreferrer">here</a>.</p> <p>Addendum: Here's a minimal example to illustrate the principle, based on default implementations.</p> <p>Addendum: <em>Not sure if it works when needed to return different classes for the same column</em>.</p> <p>If you really need to choose the renderer on a per-cell basis, override <code>prepareRenderer()</code>, as shown <a href="https://stackoverflow.com/a/14077632/230513">here</a>.</p> <p><img src="https://i.stack.imgur.com/p92fs.png" alt="image"></p> <pre><code>import java.awt.EventQueue; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.DefaultTableModel; /** @see https://stackoverflow.com/a/14672312/230513 */ public class Test { private static final Icon YES = UIManager.getIcon("InternalFrame.maximizeIcon"); private static final Icon NO = UIManager.getIcon("InternalFrame.closeIcon"); private void display() { JFrame f = new JFrame("Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DefaultTableModel model = new DefaultTableModel( new Object[]{"Name", "Icon"}, 0) { @Override public Class&lt;?&gt; getColumnClass(int col) { if (col == 1) { return Icon.class; } else { return super.getColumnClass(col); } } }; model.addRow(new Object[]{"One", YES}); model.addRow(new Object[]{"Two", NO}); final JTable table = new JTable(model); table.setRowHeight(YES.getIconHeight() +2); f.add(table); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Test().display(); } }); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload