繁体   English   中英

[B 不能转换为 javax.swing.ImageIcon

[英][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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM