2015-11-14 3 views
1

Я хочу, чтобы отобразить в TableView, данные из класса «étudiant» мы называем метод «показать()», чтобы получить данные в Tableview.JavaFX FXML, заселение TableView с использованием Hibernate

Класс Etudiant имеет строковых свойства, неSimpleStringProperty

Так как я могу заселить свою 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> 

Enseignant:

public class Enseignant implements java.io.Serializable { 

    private Integer idEnseignant; 
    private String nom; 
    private String prenom; 
+1

В чем проблема? Я вижу, что вы не установили 'cellValueFactory' для столбцов. – ItachiUchiha

ответ

2

Вы должны установить 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; 
    } 

    } 
+0

это работает, спасибо многому человеку: D –

+0

Тогда не стесняйтесь принимать в качестве ответа .. :) –

+1

тогда должен быть тип полей класса сущности be string или stringproperty – ttn