【问题标题】:JTable: text and image in the same columnJTable:文本和图像在同一列
【发布时间】:2013-12-22 04:14:15
【问题描述】:

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

像这样:

我尝试制作 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;
    }
});

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

没有渲染器,它可以很好地输出文本和数字,但不显示图像:

【问题讨论】:

  • "JTable:文本和图像在同一列中" 使用JLabel 作为rendering component。该标签同时支持ImageIcon 和文本。
  • 不知道怎么可能,有三种方法,每种方法都取决于您的 XxxTableModel 中的设置
  • JTable 有一个 ImageIcon 的默认渲染器,如果你正确地投射它,它应该可以工作。
  • 向我们展示您的代码的 sn-p,您可以在其中将 ImageIcon 添加到表中。(包含它的行/列)

标签: java image swing text jtable


【解决方案1】:
  • 关于ColumnClass 的最后一个屏幕截图设置不正确或尚未设置

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

  • 那么你的Renderer 好像没用了

【讨论】:

  • getColumnClass?我想制作具有不同数据类型(文本、图像)的列,而不是一列带有图像,另一列带有文本。
  • 是的,没有问题可能有两种方法,1) 最容易在渲染器中通过(例如)存储在 XxxTableModel 中为此单元格的字符串值设置图标 2. 渲染器/编辑器不是关于列,而是关于 @ 987654322@,这是您(可能是错误的)决定
  • 请注意不要忘记在我上一条评论中将两种上午方式的视图转换为模型
【解决方案2】:

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

更多关于这里: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多