我想通过选择组合框项目从数据库显示数据。 Combobox包含我的数据库中用户可以选择的列。我尝试了这一点,combobox是好的,代码工作没有错误,但表不更新。JavaFX:通过选定的组合框更新tableview上下文(绑定)
控制器类:
package application;
import java.io.IOException;
import java.net.URL;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
public class SortareDupaAngajatiController implements Initializable{
final ObservableList<tableAngajati> data=FXCollections.observableArrayList();
final ObservableList<String> optiuni=FXCollections.observableArrayList();
PreparedStatement intabel=null;
ResultSet rezultate=null;
String prequery;
String postquery;
@FXML
public ComboBox<String> meniu;
@FXML
TableView<tableAngajati> tabelangajati;
@FXML
private TableColumn<tableAngajati,String> numesediucol;
@FXML
private TableColumn<tableAngajati,Integer> angajaticol;
@Override
public void initialize(URL location, ResourceBundle resources) {
comboMeniu();
insertInTabel();
}
public void comboMeniu(){
try {
String query = "SELECT * FROM maginfo";
PreparedStatement dindb = Conexiune.conexiuneBd.prepareStatement(query);
ResultSet rezultate = dindb.executeQuery();
while (rezultate.next()) {
optiuni.add(rezultate.getString("nume"));
meniu.setItems(optiuni);
}
dindb.close();
rezultate.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void insertInTabel(){
try {
prequery="SELECT * FROM sediu where nume='"+meniu.getValue()+"'ORDER BY numarangajati DESC";
postquery=prequery;
intabel= Conexiune.conexiuneBd.prepareStatement(postquery);
rezultate=intabel.executeQuery();
while(rezultate.next()){
data.add(new tableAngajati(
rezultate.getString(2),
rezultate.getInt(7)
));
}
intabel.close();
rezultate.close();
} catch (Exception e) {
System.err.println(e);
}
numesediucol.setCellValueFactory(new PropertyValueFactory<>("numesediu"));
angajaticol.setCellValueFactory(new PropertyValueFactory<>("numarangajati"));
tabelangajati.setItems(null);
tabelangajati.setItems(data);
}}
表类:
package application; public class tableAngajati { private String numesediu; private int angajati; public tableAngajati(String numesediu, int angajati) { super(); this.numesediu=numesediu; this.angajati=angajati; } public String getNumesediu(){ return numesediu; } public void setNumesediu(String numesediu){ this.numesediu=numesediu; } public int getNumarangajati(){ return angajati; } public void setNumarangajati(int angajati){ this.angajati=angajati; } }
非常感谢!
显示'fxml'文件 –
@mrmcwolf我下面张贴的FXML。谢谢! – AnoGio