[英]changing imageviews on changing combobox JAVA FX
我正在某個項目上工作,我面臨的問題是,我有一個組合框和一個imageview,imageviews上的圖像根據combox box值的選擇而變化,但是無論何時我更改,我都設法實現了某些功能組合框的值可正確更改圖像視圖,但第二次更改后,圖像視圖將保持不變。
這是我的代碼
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);
}
}
}
}
});
在這里fid
observablelist
是id
,根據該查詢,我正在從數據庫獲取圖像。
我以某種方式設法解決了我的問題,進行了更改,刪除了onChange
方法中的循環,並且從onChange
方法參數中獲取了id
,因為在該參數上我具有當前項目的值,並且一切正常,問題出在loop
。
這是我的決心
fn.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
try {
System.out.println(t1);
String getAllFines1 = "SELECT * FROM fines WHERE fine_name='" + t1 + "'";
ResultSet rs1 = handler.execQuery(getAllFines1);
while (rs1.next()) {
InputStream is = rs1.getBinaryStream("fine_image");
BufferedImage imBuff = ImageIO.read(is);
image = SwingFXUtils.toFXImage(imBuff, null);
imageView.setImage(image);
}
} catch (SQLException ex) {
Logger.getLogger(UpdateFinesFXMLController.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(UpdateFinesFXMLController.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.