当前位置: 首页 > 面试题库 >

无法使用ImageIcon向jTable单元添加图像

龚镜
2023-03-14
问题内容

我试图使用ImageIcon类向jTable单元格中添加图像,但是我进入了sun.awt.image.ToolkitImage@196a4632它应该在单元格中显示图像的单元格中尝试的代码:

     JTable jTable;
 String[] columns={"Page No","Chapter","Image"};
 Object[][] rows={{1,4,null},{2,7,null}}}
 public Tab_ImgIcn(){
 ImageIcon icon=new ImageIcon(getClass().getResource("exit.png"));
           jTable= new JTable(rows, columns);
           jTable.setValueAt(icon.getImage(), 0,3);
           JScrollPane jps = new JScrollPane(jTable);
           frame.add(jps);
}

问题答案:

您需要getColumnClass()在表格模型上进行覆盖,并使用返回ImageIcon.class该列ImageIcon。否则,渲染器将显示toString(),因为默认列类类型为Object。请参见如何使用表:编辑器和渲染器。

例如

ImageIcon icon=new ImageIcon(getClass().getResource("exit.png"));
String[] columns={"Page No","Chapter","Image"};
Object[][] rows={{1,4,icon},{2,7,icon}};

DefaultTableModel model = new DefaultTableModel(rows, columns) {
    @Override
    public Class<?> getColumnClass(int column) {
        switch(column) {
            case 0:
            case 1: return Integer.class;
            case 2: return ImageIcon.class;
            default: return Object.class;
        }
    }
};
JTable table = new JTable(model);


 类似资料:
  • 问题内容: 什么是空指针异常(),什么原因导致它们? 可以使用哪些方法/工具确定原因,以阻止异常导致程序过早终止? 问题答案: 声明引用变量(即对象)时,实际上是在创建指向对象的指针。考虑以下代码,您在其中声明基本类型的变量: 在此示例中,变量是an ,Java会为您初始化它。在第二行为其分配值时,您的值将写入所指的存储位置。 但是,当您尝试声明引用 类型时 ,会发生一些不同的事情。采取以下代码:

  • 我有和我在上编写了以下代码,以从选定项中添加行。 如果用户键入了所需的名称并点击了enter,则必须将其添加到jtable,但它不会添加一行。 我认为事件是原因, 通常我们首先从jComboBox中选择项,然后对 事件(例如JButton)进行编码。 所以在这里,我希望jComboBox中考虑所选项事件被添加到JTable中。 那么对于哪一个事件我必须编写代码或另一种方法来处理呢?

  • 问题内容: 我们有一个简单的项目,我们从套接字读取数据,并希望用即将到来的数据填充表,但是我们找不到找到将行添加到尚未创建的对象的方法,只能在以下位置找到添加行的方法:表的创建时间。 是否可以向中动态添加行,或者有更好的替代对象来处理这种显示数据的方式? 编辑 :非常感谢您的回答。 他们三个看起来都很有前途,但是我只选择一个,我认为最好的就是纪尧姆的。 问题答案: 您应该创建一个自定义。A 实际上

  • 问题内容: 我想让imageIcon在每个单元格中以不同的方式显示,但是由于某种原因,当我对其进行编译时,图像不会显示。它显示图像的名称,但是图像本身不显示。这是一张图片。http://i49.tinypic.com/r9ibrn.jpg } 问题答案: 您可以在调用构造函数时传递图像的名称(请阅读)。

  • 我在这里看了几篇文章,但找不到答案。 我已经成功地将JComboBox添加到Jtable单元格中。但是,所选项目没有被“记住”。 更具体地说: 澄清一下,信息并没有丢失。虽然组合框没有直观地显示选择了什么设备,但选择是保存的。然而,我希望用户能够直观地看到他们刚刚选择的内容,而不必再次选择行。 这使我相信我使用的自定义呈现器一定有错误 呈现器:

  • 问题内容: 我有一个空的JTable,绝对没有。我需要以某种方式动态生成其表列。我尝试使用的代码的简化版本: 但是我得到了 线程“ AWT-EventQueue-0”中的异常java.lang.ArrayIndexOutOfBoundsException:0> = 0 我究竟做错了什么? 如果有帮助,这是完整的堆栈跟踪: 问题答案: 我认为您需要将列添加到表的数据模型及其列模型中。当数据模型更改时