ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 如何将图像渲染到JTable单元格

2019-08-25 05:03:15  阅读:245  来源: 互联网

标签:renderer java swing jtable cell


我想在我的JTable的单元格上应用渲染器,为此我创建了一个名为myRenderer的类:

import java.awt.Component;

import javax.swing.ImageIcon;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class MyRenderer extends DefaultTableCellRenderer {

public Component getTableCellRendererComponent(JTable table, ImageIcon icon) {

setIcon(icon);
return this;
}
}

我使用这段代码在单元格上应用渲染器:

MyRenderer renderer = new MyRenderer();

renderer.getTableCellRendererComponent(table, icon);

table.getColumnModel().getColumn(6).setCellRenderer(renderer);

问题是,rebderer应用于第6列中的所有单元格,我希望它仅应用于一个单元格(行/列),但我不知道该怎么做?

提前致谢

解决方法:

除了您甚至没有正确覆盖getTableCellRendererComponent方法之外,您甚至不需要自定义渲染器来在列中显示图像

How to Use Tables开始.这是带有默认预配置渲染器的类型列表

> Boolean – 使用复选框呈现.
> Number – 由右对齐标签呈现.
> Double,Float – 与Number相同,但是对象到文本的转换由NumberFormat实例执行(使用当前语言环境的默认数字格式).
> Date – 由标签呈现,由DateFormat实例执行对象到文本的转换(使用日期和时间的简短样式).
> ImageIcon,Icon – 由居中标签呈现.
>对象 – 由显示对象字符串值的标签呈现.

因此,您可以将一个ImageIcon添加到表中,并且如果您正确覆盖了getColumnClass(),它将被呈现为这样

同样来自教程:

To choose the renderer that displays the cells in a column, a table first determines whether you specified a renderer for that particular column. If you did not, then the table invokes the table model’s getColumnClass method, which gets the data type of the column’s cells. Next, the table compares the column’s data type with a list of data types for which cell renderers are registered

因此,假设您有一个包含三列的DefaultTableModel,并且您希望在最后一列中使用ImageIcon.你会做这样的事情

DefaultTableModel model = new DefaultTableModel(...) {
    @Override
    public Class<?> getColumnClass(int column) {
        switch (column) {
            case 2: return ImageIcon.class;
            default: return String.class
        }
    }
};
JTable table = new JTable(model);

然后只需将ImageIcon添加到第三列,它就会被渲染

String colOneDate = "Data";
String colTwoData = "Data";
ImageIcon colThreeIcon = new ImageIcon(...);
model.addRow(new Object[] { colOneData, colTwoData, colThreeIcon });

您可能还需要相应地将列宽和高度设置为图像的大小.为此你可以看到任何these questions

标签:renderer,java,swing,jtable,cell
来源: https://codeday.me/bug/20190825/1715510.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有