java - 在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();
}
}
解决方案
推荐阅读
- ruby-on-rails - AWS Cloud9 服务器拒绝连接
- axapta - 清除批处理服务器上的 InfoLog
- python - python 3.7 - 如何检测由 X 按钮关闭的控制台窗口?
- fortran - 使用 Fortran 中的文件命名格式打开多个文件进行读取
- sql - Oracle 数据库的分页查询返回重复条目
- swift - 根据tableView中的附件创建条件语句
- python-3.x - 根据多个条件替换观察值(即多行中的多列)
- amazon-web-services - 使用 UDP ECS 服务对 NetworkLoadBalancer 进行健康检查
- android-studio - 如何将 Java 方法参考代码转换为 Kotlin
- regex - If Else 正则表达式匹配