![](/img/trans.png)
[英]Using javax.swing.ImageIcon to display a jpg i saved in the directory
[英][B cannot be cast to javax.swing.ImageIcon
我的代码有什么问题,这是我在表格中的代码,每次点击都会出现错误
我想把桌子上的图片显示在label上,你怎么看? 昏暗。 是我的 jlabel 谢谢
private void prodtableMouseClicked(java.awt.event.MouseEvent evt) {
DefaultTableModel model = (DefaultTableModel)prodtable.getModel();
int Myindex = prodtable.getSelectedRow();
prodcode.setText(model.getValueAt(Myindex, 0).toString());
prodname.setText(model.getValueAt(Myindex, 1).toString());
prodqty.setText(model.getValueAt(Myindex, 2).toString());
prodprice.setText(model.getValueAt(Myindex, 3).toString());
ImageIcon image1= (ImageIcon)prodtable.getValueAt(Myindex,4);
Image image2 =
image1.getImage().getScaledInstance(dimg.getWidth(),dimg.getHeight(),Image.SCALE_SMOOTH);
ImageIcon image3 =new ImageIcon (image2);
dimg.setIcon(image3);
这是出现的错误:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [B cannot be cast to
javax.swing.ImageIcon
at admin.prodtableMouseClicked(admin.java:411)
at admin.access$200(admin.java:32)
at admin$3.mouseClicked(admin.java:150)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6536)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
prodtable.getValueAt(Myindex,4);
正在返回一个字节数组。
cast 运算符不转换任何东西1 。 这只是一个类型断言:您是说无论getValueAt
返回什么,它都是一个ImageIcon 。 不是,所以这失败了。
也许该字节数组是 jpeg 或 PNG 图像或诸如此类的内容,在这种情况下,您必须通过例如 Toolkit 的方法将其丢弃以将它们转换为 Image 对象。 您的代码粘贴没有提供任何关于它可能是什么的见解。
[1] 当括号中的东西是原始类型时,它会转换。 关键是, ImageIcon
不是原始的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.