JTable:同一列中的文本和图像

时间:2013-12-05 09:36:29

标签: java image swing text jtable

如何制作包含不同类型数据的JTable列? (某些单元格包含图像,某些单元格包含文本)

像这样:

enter image description here

我尝试制作CellRenderer,但它不起作用。

col.setCellRenderer(new DefaultTableCellRenderer() {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if (value instanceof ImageIcon) {
            ImageIcon img = (ImageIcon) value;
            setIcon(img);
            setHorizontalAlignment(JLabel.CENTER);
        }
        else {
            setValue(value);
        }
        return this;
    }
});

它给了我这个奇怪的输出:

enter image description here

如果没有渲染器,它会输出文本和数字,但不会显示图像:

enter image description here

2 个答案:

答案 0 :(得分:4)

  • 上次关于ColumnClass的screen_shots设置不正确或尚未设置

  • getColumnClass中使用Icon/ImageIcon.Class覆盖XxxTabelModel

  • 然后你的Renderer似乎没用了

答案 1 :(得分:2)

JTable有一个默认的渲染器来渲染ImageIcon。

有关此内容的更多信息: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender