콤보 박스 항목을 선택하여 데이터베이스의 tableview에 데이터를 표시하려고합니다. Combobox에는 사용자가 선택할 수있는 데이터베이스의 열이 있습니다. 나는 이것을 시도, 콤보 상자는 괜찮아 코드는 오류없이 작동하지만 테이블은 업데이트되지 않습니다.JavaFX : 선택한 콤보 상자 (바인딩)로 테이블 뷰 컨텍스트 업데이트
컨트롤러 클래스 :
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