从imageView更新Java Fx图像

时间:2018-12-05 12:00:59

标签: java mysql javafx imageview blob

如何更新imageView中显示的图像 我从数据库设置此图像 从数据库在imageView上获取图像的代码是...

InputStream is = resultSet.getBinaryStream("image");
OutputStream os;

os = new FileOutputStream(new File("src/sources/images/photo.jpg"));
byte[]content = new byte[1024];
int size = 0;
while((size=is.read(content))!= -1)
{
   os.write(content,0,size);
}
os.close();
is.close();
image  = new Image("file:src/sources/images/photo.jpg");

imageView.setImage(image);

图像以MySQL数据库中的BLOB类型保存

现在,如果我不使用文件选择器选择任何图像,我想更新此图像并再次设置该图像 请解决我这个问题 预先感谢

文件选择器代码

stage = (Stage) showScene.getScene().getWindow();

   file = fileChooser.showOpenDialog(stage);

   if(file != null){
               image = new Image(file.getAbsoluteFile().toURI().toString(),imageView.getFitWidth(),imageView.getFitHeight(),true,true);
       imageView.setImage(image);
       imageView.setPreserveRatio(true);
   }
  fis = new FileInputStream(file); // here i got error(null pointer exception) if i try to update withouting choosing image from filechooser 

我将 fis 传递到prepareed语句以进行更新并插入

1 个答案:

答案 0 :(得分:1)

之所以得到NullPointerException,是因为如果不使用FileChooser选择文件,则file变量将设置为null。可以通过稍微更改if语句来解决此问题。

file = fileChooser.showOpenDialog(stage);

if (file == null) {
    file = new File("path/to/default/file")
}

image = new Image(file.getAbsoluteFile().toURI().toString(),imageView.getFitWidth(),imageView.getFitHeight(),true,true);
imageView.setImage(image);
imageView.setPreserveRatio(true);

fis = new FileInputStream(file);