如何在JLabel上将图像路径转换为图像

时间:2015-09-24 17:59:22

标签: java jtable

当我从JTable中选择一条记录时,我希望JLabel中显示给定路径的图像。当我写代码时:

private void profile_tableMouseClicked(java.awt.event.MouseEvent evt) {
    DefaultTableModel model = (DefaultTableModel) profile_table.getModel();
    dr_profile_image.setIcon((Icon)model.getValueAt(profile_table.getSelectedRow(),9));
}

我收到以下错误:

  

线程“AWT-EventQueue-0”中的异常   java.lang.ClassCastException:java.lang.String无法强制转换为javax.swing.Icon

1 个答案:

答案 0 :(得分:1)

抛出异常是因为您正在向String投射IconDefaultTableModel.getValueAt(int row, int col)返回行的项目,col为Object,其类类型是存储在表模型中的实例的类,在您的情况下为String。如果此值是您要使用的图像文件的路径,则需要从该路径创建Icon。您可以使用javax.swing.ImageIcon执行此操作:

import javax.swing.ImageIcon;

private void profile_tableMouseClicked(java.awt.event.MouseEvent evt)
{
   DefaultTableModel model = (DefaultTableModel) profile_table.getModel();
   dr_profile_image.setIcon(
      new ImageIcon(model.getValueAt(profile_table.getSelectedRow(),9).toString());
}