0

こんにちは、JavaFx TableView に ObservableList を次のように入力しようとしています。

 emf = Persistence.createEntityManagerFactory("shopPu");
            em = emf.createEntityManager();
            List<Products> proList = em.createQuery("select p from Products p").getResultList();
            ObservableList<Products> proObs = FXCollections.observableList(proList);
            tableView.setEditable(true);
            tableView.setItems(proObs);

私のリストはデータで満たされていますが、TableViewには何も表示されません。

これが私のFXMLです

<TableView fx:id="tProducts" prefHeight="246.0" prefWidth="726.0" AnchorPane.bottomAnchor="160.0" AnchorPane.leftAnchor="7.0" AnchorPane.rightAnchor="7.0" AnchorPane.topAnchor="70.0">
      <columns>
        <TableColumn text="ID" fx:id="ID"/>
      </columns>
    </TableView>

私はこれを試しました:

<TableView fx:id="tProducts" prefHeight="246.0" prefWidth="726.0" AnchorPane.bottomAnchor="160.0" AnchorPane.leftAnchor="7.0" AnchorPane.rightAnchor="7.0" AnchorPane.topAnchor="70.0">
      <columns>
        <TableColumn text="ID" fx:id="ID">
            <cellValueFactory>
                <PropertyValueFactory property="id" />
            </cellValueFactory>
        </TableColumn>
      </columns>
    </TableView>

しかし、そのようなエラーが発生する運はありません:

javafx.fxml.LoadException: PropertyValueFactory is not a valid type.
    at javafx.fxml.FXMLLoader.createElement(Unknown Source)
    at javafx.fxml.FXMLLoader.processStartElement(Unknown Source)

TableView の設定方法を教えてください

アップデート

コントローラ:

public class MainWindow implements Initializable {

    @FXML private Label lblStatus;
    @FXML private TableView<Products> tableView;
    private EntityManager em;
    private EntityManagerFactory emf;

    @FXML
    private void Refresh_Clicked(javafx.event.ActionEvent event) {
        try {
            emf = Persistence.createEntityManagerFactory("shopPu");
            em = emf.createEntityManager();
            List<Products> proList = em.createQuery("select p from Products p").getResultList();

            ObservableList<Products> proObs = FXCollections.observableList(proList);

            tableView.setEditable(true);
            tableView.setItems(proObs);
        } catch (Exception e) {

                JOptionPane.showMessageDialog(null, e.getMessage());

        }

    }

ありがとう。

4

4 に答える 4

1

コード例をこれ以上分析しないと、投稿されたエラーは、PropertyValueFactoryのfxmlにインポートがないことが原因である可能性があります。

于 2012-10-02T12:47:29.310 に答える
1

あなたによると、あなたFXMLTableView名前はtProducts. しかし、これによりインジェクション中にエラーが発生するはずです。コントローラーコードを貼り付けていただけますか?

于 2012-09-04T21:47:59.743 に答える
1

FXML ファイルにこの行を追加して、プロジェクトの類似の問題を解決しました。

<?import javafx.scene.control.cell.PropertyValueFactory ?>
于 2015-11-16T18:53:13.733 に答える