【问题标题】:javaFX FXML, populating TableView using HibernatejavaFX FXML,使用 Hibernate 填充 TableView
【发布时间】:2016-02-16 08:05:49
【问题描述】:

我想在 TableView 中显示来自“Etudiant”类的数据 我们调用方法“show()”来获取数据到tableview中。

Etudiant 类具有 String 属性,没有 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>

封臣:

public class Enseignant  implements java.io.Serializable {

   private Integer idEnseignant;
   private String nom;
   private String prenom;

【问题讨论】:

  • 有什么问题?我可以看到您没有为列设置cellValueFactory

标签: hibernate javafx tableview fxml


【解决方案1】:

您应该为表格中的每一列设置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;
    }

  }

【讨论】:

  • 那么实体类的字段类型应该是string还是stringproperty
猜你喜欢
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 2013-06-01
  • 2014-10-08
  • 2018-10-14
  • 2013-06-06
相关资源
最近更新 更多