【问题标题】:How to refresh data when click combobox in javafx?在javafx中单击组合框时如何刷新数据?
【发布时间】:2019-10-19 05:21:02
【问题描述】:

每次我按Combobox 时,我都想从database 给出的每个不同值中刷新数据

但是我每次按下组合框时,数据会不断增加而不是刷新

The Screenshot

public void initialize(URL url, ResourceBundle rb) {
        con = new DBConnect();
        con.connect();

        depart();
    }   
void init(Stage stage) {
        this.stage = stage;
    }

    public void depart(){
        String sql = "SELECT DISTINCT b.nama_bandara FROM departure as depart "
                + "INNER JOIN bandara as b on b.kode_bandara = depart.kode_bandara";
        try {
            pst = con.conn.prepareStatement(sql);
            con.rs = pst.executeQuery();

            while(con.rs.next()){
                combo.getItems().addAll(con.rs.getString(1));

            }
        } catch (SQLException ex) {
            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

每次点击,数据总是增加

@FXML
    private void CB(ActionEvent event) {

        String depart = combo.getValue();
        String sql = "SELECT b.kota, bb.kota, single.harga FROM single_trip as single \n" +
                    "INNER JOIN departure as depart ON depart.kode_departure = single.kode_departure \n" +
                    "INNER JOIN bandara as b on b.kode_bandara = depart.kode_bandara \n" +
                    "INNER JOIN arrived as arrive on arrive.kode_arrived = single.kode_arrived \n" +
                    "INNER JOIN bandara as bb on bb.kode_bandara = arrive.kode_bandara \n" +
                    "WHERE b.nama_bandara = '"+depart+"'";
        try {
            con.st = con.conn.createStatement();
            con.rs = con.st.executeQuery(sql);
            Node[] nodes = new Node[1];

            while(con.rs.next()){

                for(Node node : nodes){

                    FXMLLoader hb = new FXMLLoader(getClass().getResource("ComboBoxloop.fxml"));
                    node = hb.load();
                    String namaDepart = con.rs.getString("b.kota");
                    String namaArrive = con.rs.getString("bb.kota");
                    int harga = con.rs.getInt("single.harga");
                    ComboBoxloopController controller = hb.getController();
                    controller.getValueFromCB(namaDepart, namaArrive, harga);

                    controller.setDepart(namaDepart);
                    controller.setArrive(namaArrive);
                    controller.setHarga(harga);

                   //i think i must add something in here
                   pnlComboBoxloop.getChildren().addAll(node);
                }
            }
        } catch (SQLException | IOException ex) {
            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

我想我必须对这个 pnlComboBoxloop.getChildren().addAll(node); 说点什么

因为每次点击组合框时数据都会增加

public String getDepart() {
        return Depart;
    }

    public void setDepart(String Depart) {
        this.Depart = Depart;
    }

    public String getArrive() {
        return arrive;
    }

    public void setArrive(String arrive) {
        this.arrive = arrive;
    }

    public int getHarga() {
        return harga;
    }

    public void setHarga(int harga) {
        this.harga = harga;
    }

    public void getValueFromCB(String depart, String arrive, int harga){
               TripDeparture.setText(depart);
               TripArrived.setText(arrive);
               TripHarga.setText(Integer.toString(harga));
    }

【问题讨论】:

    标签: java javafx combobox


    【解决方案1】:

    您正在使用 addAll - 添加到列表中。 尝试改用setAll

    【讨论】:

    • IDK。这似乎是一个不同的问题。原始 Q 中显示的列没有任何内容
    • 好的,我明白了。我只是想知道我是否使用addAll 我得到了数据库中的每一列,但问题是,如果我单击combobox,数据总是会增加。但是当我使用setAll 时,数据不再增加,但问题只是在我的数据库中显示最后一列
    • 如果答案解决了您的问题,请接受正确的答案。尝试解决您的新问题。如果您不能随意提出新问题。 @AchmadSufyan。
    猜你喜欢
    • 2019-10-20
    • 1970-01-01
    • 2015-11-28
    • 2019-01-24
    • 1970-01-01
    • 2012-08-19
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多