我正在使用java。在我的应用程序中,我想为用户提供添加和更改图像的功能。我使用打开的对话框来选择图像,它会正常工作,即在按钮点击打开对话框打开时选择任何图像。
我想将选定的图像存储到指定的文件夹中(src / resources /以及存储在数据库中的路径,以便进行更新。
请指导我克服这个问题。
实际代码:
private void btnImagenActionPerformed(java.awt.event.ActionEvent evt) {
int returnVal = ElegirImagen.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = ElegirImagen.getSelectedFile();
String nombre=ElegirImagen.getSelectedFile().getName();
String sname = file.getAbsolutePath();
BufferedImage myPicture=null;
try {
myPicture = ImageIO.read(new File(sname));
} catch (IOException ex) {
Logger.getLogger(Videoteca.class.getName()).log(Level.SEVERE, null, ex);
}
lblImg.setIcon(new ImageIcon(myPicture));
lblImg.repaint();
BufferedImage i = new BufferedImage(300,500,BufferedImage.TYPE_INT_ARGB);
File fichero = new File(sname);
String formato = "jpg";
try {
ImageIO.write(i, formato, fichero);
} catch (IOException ex) {
Logger.getLogger(Videoteca.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
答案 0 :(得分:0)
Swing具有单线程模型。所有生成的Events
也由称为EventQueue
的单个队列中的一个名为EDT(Event Dispatch Thread)
的单个队列处理。动作事件也不例外。你不应该在这个线程中读写文件。而是使用Anonymous类或扩展Runnable
创建一个新线程,并在那里部署您的图像读写操作。
虽然不清楚你在问什么,但我认为你可能是在写完一张图片之后。 ImageIO
也有write
函数来编写图像文件。查看包含足够说明的Writing/Saving an Image教程。