【发布时间】:2017-08-13 07:09:33
【问题描述】:
我正在做一些项目,我面临的问题是,我有一个组合框和一个图像视图,图像视图上的图像根据组合框值的选择而变化,但是我目前设法实现了一些功能,每当我更改组合框的值时,图像视图都会正确更改,但在第二次更改时,图像视图保持不变。
这是我的代码
fn.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
if (t1 != null) {
System.out.println("here");
for (int i = 0; i < Fid.size(); i++) {
String getAllFines = "SELECT * FROM fines WHERE fine_id='" + Fid.get(i) + "'";
ResultSet rs1 = handler.execQuery(getAllFines);
try {
if (rs1.next()) {
System.out.println("here fine name is " + Fid.get(i));
InputStream is = rs1.getBinaryStream("fine_image");
BufferedImage imBuff = ImageIO.read(is);
image = SwingFXUtils.toFXImage(imBuff, null);
imageView.setImage(image);
}
} catch (SQLException | IOException ex) {
Logger.getLogger(UpdateFinesFXMLController.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
});
这里fidobservablelist 是id,基于该查询,我从数据库中获取图像。
【问题讨论】:
-
fn是什么?发布minimal reproducible example。您可能不需要更改侦听器。 -
fn 是我的组合框
-
为什么我不需要改变监听器
-
因为可以绑定。发布minimal reproducible example。
-
为什么你期望
Fid的内容在调用之间被修改?您的代码会加载与列表中的 id 相对应的每个图像,并保留最后一个...此外,Image有一个直接从InputStream加载的构造函数;应该没必要绕道BufferedImage...
标签: java javafx combobox imageview