首页 > 解决方案 > 在java swing中的标签上导出图像

问题描述

我的 java 在标签上编码一个图像,在这个代码中是 b2。我想要做的是当用户点击标签上要导出的图像的按钮时。现在有一个错误说明

线程“AWT-EventQueue-0”java.lang.ClassCastException 中的异常:类 javax.swing.ImageIcon 无法转换为类 java.awt.image.BufferedImage(javax.swing.ImageIcon 和 java.awt.image.BufferedImage 在加载程序'bootstrap'的模块java.desktop)在time.simple$1.actionPerformed(simple.java:51)。

第 51 行是 unscaledButtonImage = (BufferedImage) 图标;。所以每次我尝试运行这段代码时都会出现运行时错误。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;  

class simple {
    Frame f;  
      JLabel b2=new JLabel("");;  

    simple() throws IOException{ 

        f=new JFrame();  
        b2.setIcon(new ImageIcon("/Users/johnzalubski/Desktop/dropIn/Complete-Audi-Buying-Guide-gear-patrol-lead-full.jpg"));
        JButton b3 = new JButton("Exported");
        File file = new File("aa.png");
        f.add(b2,BorderLayout.CENTER);  
        f.add(b3,BorderLayout.SOUTH); 
        f.setSize(400,500);  
        f.setVisible(true);  

        b3.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {


        BufferedImage unscaledButtonImage;
        Icon icon = b2.getIcon();



        unscaledButtonImage = (BufferedImage) icon;





                BufferedImage scaledButtonImage =
                        new BufferedImage(400, 1000, unscaledButtonImage.getType());
                    Graphics g = scaledButtonImage.createGraphics();
                    g.drawImage(unscaledButtonImage, 0, 0, 400, 1000, null);

                    g.dispose();


                    b2.setIcon(new ImageIcon(scaledButtonImage));

                try {
                    ImageIO.write(scaledButtonImage, "png",file);

                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
    }  
       public ImageIcon ResizeImage(String ImagePath)
        {
            ImageIcon MyImage = new ImageIcon(ImagePath);
            Image img = MyImage.getImage();
            Image newImg = img.getScaledInstance(b2.getWidth(), b2.getHeight(), Image.SCALE_SMOOTH);
            ImageIcon image = new ImageIcon(newImg);
            return image;
        }
        public static void main(String[] args) throws IOException {  
        new simple();  

        }  

    }  

标签: javaimageswingbufferedimageimageicon

解决方案


推荐阅读