当我从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
答案 0 :(得分:1)
抛出异常是因为您正在向String
投射Icon
。 DefaultTableModel.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());
}