javaFX FXML,使用 Hibernate 填充 TableView
javaFX FXML, populating TableView using Hibernate
我想在 TableView 中显示来自 class "Etudiant" 的数据
我们调用方法“show()”将数据提取到表视图中。
classEtudiant有String属性,没有简单字符串属性
那么我该如何填充我的 tableView 呢?
控制器:
@FXML
TableView<Enseignant> tableau;
@FXML
TableColumn ID;
@FXML
TableColumn<Enseignant, String> NOM;
@FXML
TableColumn PRENOM;
@FXML
ComboBox<String> matiereCB;
void show(){
ObservableList<Enseignant> e = FXCollections.observableArrayList();
//em : EnseignantModel : the model of this class
//show : the method that brings data in a vector
Vector<Enseignant> enseignants = em.show();
Enseignant enseignant = new Enseignant();
for (int i = 0; i < enseignants.size(); i++) {
enseignant = enseignants.get(i);
e.add(enseignant);
}
tableau.setItems(e);
}
FXML:
<TableView fx:id="tableau" layoutX="387.0" layoutY="177.0" prefHeight="361.0" prefWidth="734.0">
<columns>
<TableColumn fx:id="ID" prefWidth="43.0" text="ID" />
<TableColumn fx:id="NOM" prefWidth="95.0" text="NOM" />
<TableColumn fx:id="PRENOM" prefWidth="94.0" text="PRENOM" />
<TableColumn fx:id="MATIERE" prefWidth="97.0" text="Matière" />
</columns>
</TableView>
少校:
public class Enseignant implements java.io.Serializable {
private Integer idEnseignant;
private String nom;
private String prenom;
您应该为 table 中的每一列设置 cellValueFactory
。
public class EnseignantFxmlController implements Initializable {
@FXML
private TableView<Enseignant> tableau;
@FXML
private TableColumn ID;
@FXML
private TableColumn NOM;
@FXML
private TableColumn PRENOM;
@Override
public void initialize(URL url, ResourceBundle rb) {
//each cellValueFactory has been set according to the member variables of your entity class
ID.setCellValueFactory(new PropertyValueFactory<Enseignant, Integer>("idEnseignant"));
NOM.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("nom"));
PRENOM.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("prenom"));
tableau.setItems(getEnseignant());
}
//here you can add all your Enseignants into a ObservableList
public ObservableList<Enseignant> getEnseignant() {
ObservableList<Enseignant> enseignantList = FXCollections.observableArrayList();
Session session = util.HibernateUtil.
getSessionFactory().openSession();
List<Enseignant> eList = session.
createCriteria(Enseignant.class).list();
for (Enseignant ent : eList) {
enseignantList.add(ent);
}
return enseignantList;
}
}
我想在 TableView 中显示来自 class "Etudiant" 的数据 我们调用方法“show()”将数据提取到表视图中。
classEtudiant有String属性,没有简单字符串属性
那么我该如何填充我的 tableView 呢? 控制器:
@FXML
TableView<Enseignant> tableau;
@FXML
TableColumn ID;
@FXML
TableColumn<Enseignant, String> NOM;
@FXML
TableColumn PRENOM;
@FXML
ComboBox<String> matiereCB;
void show(){
ObservableList<Enseignant> e = FXCollections.observableArrayList();
//em : EnseignantModel : the model of this class
//show : the method that brings data in a vector
Vector<Enseignant> enseignants = em.show();
Enseignant enseignant = new Enseignant();
for (int i = 0; i < enseignants.size(); i++) {
enseignant = enseignants.get(i);
e.add(enseignant);
}
tableau.setItems(e);
}
FXML:
<TableView fx:id="tableau" layoutX="387.0" layoutY="177.0" prefHeight="361.0" prefWidth="734.0">
<columns>
<TableColumn fx:id="ID" prefWidth="43.0" text="ID" />
<TableColumn fx:id="NOM" prefWidth="95.0" text="NOM" />
<TableColumn fx:id="PRENOM" prefWidth="94.0" text="PRENOM" />
<TableColumn fx:id="MATIERE" prefWidth="97.0" text="Matière" />
</columns>
</TableView>
少校:
public class Enseignant implements java.io.Serializable {
private Integer idEnseignant;
private String nom;
private String prenom;
您应该为 table 中的每一列设置 cellValueFactory
。
public class EnseignantFxmlController implements Initializable {
@FXML
private TableView<Enseignant> tableau;
@FXML
private TableColumn ID;
@FXML
private TableColumn NOM;
@FXML
private TableColumn PRENOM;
@Override
public void initialize(URL url, ResourceBundle rb) {
//each cellValueFactory has been set according to the member variables of your entity class
ID.setCellValueFactory(new PropertyValueFactory<Enseignant, Integer>("idEnseignant"));
NOM.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("nom"));
PRENOM.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("prenom"));
tableau.setItems(getEnseignant());
}
//here you can add all your Enseignants into a ObservableList
public ObservableList<Enseignant> getEnseignant() {
ObservableList<Enseignant> enseignantList = FXCollections.observableArrayList();
Session session = util.HibernateUtil.
getSessionFactory().openSession();
List<Enseignant> eList = session.
createCriteria(Enseignant.class).list();
for (Enseignant ent : eList) {
enseignantList.add(ent);
}
return enseignantList;
}
}