我创建了一个运行良好的小程序,然后我需要添加一个 GUI,以便使用 NetBeans 移植我的所有代码以使事情变得更容易一些。当我使用 jpg 时,它的效果很好,但显然这不是最好的格式。以前,当我使用 png 时它工作得很好,现在我在控制台中得到了一个以前从未得到过的错误的大列表。本质上,程序将用户选择的文件读取为缓冲图像,并且还将 GUI 中的标签设置为所选文件,或者在创建 GUI 之前一直这样做。正如我所说,它适用于 jpg,完全没有问题,所以我不太确定发生了什么。它还可以将其作为缓冲图像读取,因为我将文件路径和缓冲图像变量打印到控制台,因此可以看到这两个都很好,然后是一大堆错误,如下所示:
线程“AWT-EventQueue-0”java.lang.ClassCastException 中的异常:[我无法在 java.awt.image.ColorModel.getAlpha(ColorModel.java:833) 在 java.awt.image.ColorModel 中转换为 [B。 getRGB(ColorModel.java:878) 在 sun.awt.image.ImageRepresentation.convertToRGB(ImageRepresentation.java:305) 在 sun.awt.image.ImageRepresentation.setPixels(ImageRepresentation.java:564) 在 java.awt.image.AreaAveragingScaleFilter .accumPixels(AreaAveragingScaleFilter.java:213) 在 java.awt.image.AreaAveragingScaleFilter.setPixels(AreaAveragingScaleFilter.java:252) 在 sun.awt.image.OffScreenImageSource.sendPixels(OffScreenImageSource.java:102) 在 sun.awt.image。在 sun.awt.image.OffScreenImageSource.addConsumer(OffScreenImageSource.java:66) 在 sun.awt 的 OffScreenImageSource.produce(OffScreenImageSource.java:187)。image.OffScreenImageSource.startProduction(OffScreenImageSource.java:80) 在 java.awt.image.FilteredImageSource.startProduction(FilteredImageSource.java:183) 在 sun.awt.image.ImageRepresentation.startProduction(ImageRepresentation.java:727) 在 sun.awt .image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:802) 在 sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1018) 在 sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186) 在 sun。 java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3084) 在 sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3069) 在 javax.swing.ImageIcon.paintIcon(ImageIcon.java:413) 在 sun.swing.plaf.synth .SynthIcon.paintIcon(SynthIcon.java:67) 在 javax.swing.plaf.synth.SynthGraphicsUtils.paintText(SynthGraphicsUtils.java:396) 在 javax.swing.plaf.synth。SynthLabelUI.paint(SynthLabelUI.java:213) 在 javax.swing.plaf.synth.SynthLabelUI.update(SynthLabelUI.java:177) 在 javax.swing.JComponent.paintComponent(JComponent.java:778) 在 javax.swing.JComponent .paint(JComponent.java:1054) 在 javax.swing.JComponent.paintChildren(JComponent.java:887) 在 javax.swing.JComponent.paint(JComponent.java:1063) 在 javax.swing.JComponent.paintToOffscreen(JComponent. java:5221) 在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1512) 在 javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1443) 在 javax.swing.RepaintManager.paint(RepaintManager.java :1236) 在 javax.swing.JComponent._paintImmediately(JComponent.java:5169) 在 javax.swing.JComponent.paintImmediately(JComponent.java:4980) 在 javax.swing.RepaintManager $3。在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java: 76) 在 javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784) 在 javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757) 在 javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706) 在 javax。 swing.RepaintManager.access$1000(RepaintManager.java:62) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at java。 awt.EventQueue.dispatchEventImpl(EventQueue.java:727) 在 java.awt.EventQueue.access$200(EventQueue.java:103) 在 java.awt.EventQueue$3.run(EventQueue.java:688) at java.awt.EventQueue$3.run(EventQueue.java:686) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege (ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:697) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java: 161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java. awt.EventDispatchThread.run(EventDispatchThread.java:91)688) 在 java.awt.EventQueue$3.run(EventQueue.java:686) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt .EventQueue.dispatchEvent(EventQueue.java:697) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy( EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91 )688) 在 java.awt.EventQueue$3.run(EventQueue.java:686) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt .EventQueue.dispatchEvent(EventQueue.java:697) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy( EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91 )doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:697) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) ) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt .EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91)doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:697) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) ) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt .EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91)697) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java. awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91)697) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java. awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91)java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 处的 EventDispatchThread.pumpEvents(EventDispatchThread.java:138)java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 处的 EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
我的加载图标的代码是:
image1 = ImageIO.read(file);
ImageIcon imageIcon1 = new ImageIcon(image1);
Image redInput = imageIcon1.getImage().getScaledInstance(300, 300, Image.SCALE_SMOOTH);
imageIcon1.setImage(redInput);
redLabel.setIcon(imageIcon1);
我只有一堂课NewJFrame
,任何帮助将不胜感激!