簡體   English   中英

在更改組合框JAVA FX上更改imageviews

[英]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 observablelistid ,根據該查詢,我正在從數據庫獲取圖像。

我以某種方式設法解決了我的問題,進行了更改,刪除了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM