3
私はフロントエンドでjavafxを使って個人用の小さなアプリケーションを開発しています。しかし、私はこの問題に直面しています:データベースからフェッチされたデータはTableViewに表示されません。 データベースとしてRavenDB 3.5を使用しています。テーブルビューはデータベースからフェッチされたデータを表示していません
私のコントローラクラス:
public class FXMLHomePageController implements Initializable {
@FXML
private VBox vBox;
@FXML
private TabPane tabPane;
@FXML
private Tab tabFornecedores, tabGraficos;
@FXML
private AnchorPane anchorPaneFornecedores;
@FXML
private TableView<Fornecedor> tableFornecedores;
@FXML
private TableColumn<Fornecedor, String> colIdFornecedor;
@FXML
private TableColumn<Fornecedor, String> colNomeFantasia;
@FXML
private TableColumn<Fornecedor, String> colCnpjFornecedor;
@FXML
private TableColumn<Fornecedor, String> colEmailFornecedor;
@FXML
private Button btNovoFornecedor;
@FXML
private Button btDetalhesFornecedor;
@FXML
private Button btEditarFornecedor;
@FXML
private Button btRemoverFornecedor;
private FornecedorDAO dao = new FornecedorDAO();
private ObservableList<Fornecedor> fornecedores = FXCollections.observableArrayList(dao.getAll());
@Override
public void initialize(URL location, ResourceBundle resources) {
colIdFornecedor.setCellValueFactory(new PropertyValueFactory<Fornecedor, String>("id"));
colNomeFantasia.setCellValueFactory(new PropertyValueFactory<Fornecedor, String>("nomeFantasia"));
colCnpjFornecedor.setCellValueFactory(new PropertyValueFactory<Fornecedor, String>("cnpj"));
colEmailFornecedor.setCellValueFactory(new PropertyValueFactory<Fornecedor, String>("email"));
tableFornecedores.getItems().addAll(fornecedores);
}
}
マイFXMLファイル:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.VBox?>
<VBox fx:id="vBox" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TabPane fx:id="tabPane" prefHeight="606.0" prefWidth="800.0" tabClosingPolicy="UNAVAILABLE">
<tabs>
<Tab fx:id="tabFornecedores" text="Fornecedores">
<content>
<AnchorPane fx:id="anchorPaneFornecedores" prefHeight="200.0" prefWidth="200.0">
<children>
<TableView fx:id="tableFornecedores" layoutX="28.0" layoutY="79.0" prefHeight="431.0" prefWidth="744.0" AnchorPane.bottomAnchor="61.0" AnchorPane.leftAnchor="28.0" AnchorPane.rightAnchor="28.0" AnchorPane.topAnchor="79.0">
<columns>
<TableColumn fx:id="colIdFornecedor" prefWidth="75.0" text="#" />
<TableColumn fx:id="colNomeFantasia" prefWidth="153.0" text="Nome Fantasia" />
<TableColumn fx:id="colCnpjFornecedor" prefWidth="251.0" text="CNPJ" />
<TableColumn fx:id="colEmailFornecedor" prefWidth="264.0" text="E-mail" />
</columns>
</TableView>
<Button fx:id="btNovoFornecedor" layoutX="622.0" layoutY="21.0" mnemonicParsing="false" prefHeight="40.0" prefWidth="150.0" text="Novo Fornecedor" />
<Button fx:id="btDetalhesFornecedor" layoutX="28.0" layoutY="523.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="160.0" text="Detalhes do Fornecedor" />
<Button fx:id="btEditarFornecedor" layoutX="228.0" layoutY="523.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="160.0" text="Editar Fornecedor" />
<Button fx:id="btRemoverFornecedor" layoutX="429.0" layoutY="523.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="160.0" text="Remover Fornecedor" />
</children>
</AnchorPane>
</content>
</Tab>
<Tab fx:id="tabGraficos" text="Gráficos" />
</tabs>
</TabPane>
</children>
</VBox>
マイDAOファイル:
public class FornecedorDAO {
private IDocumentStore store;
private IDocumentSession session;
public FornecedorDAO() {
store = DatabaseConnection.openConnection();
session = store.openSession("easystock");
}
public void save(Fornecedor fornecedor) {
session.store(fornecedor);
session.saveChanges();
}
public void update(Fornecedor fornecedor) {
Fornecedor oldForn = session.load(Fornecedor.class, fornecedor.getId());
oldForn.setNomeFantasia(fornecedor.getNomeFantasia());
oldForn.setCnpj(fornecedor.getCnpj());
oldForn.setEmail(fornecedor.getEmail());
oldForn.setEndereco(fornecedor.getEndereco());
oldForn.setProdutosFornecidos(fornecedor.getProdutosFornecidos());
session.saveChanges();
}
public void remove(Fornecedor fornecedor) {
session.delete(fornecedor.getId());
session.saveChanges();
}
public List<Fornecedor> getAll() {
return session.query(Fornecedor.class).take(Integer.MAX_VALUE).toList();
}
public List<Fornecedor> getByName(String name) {
QFornecedor query = QFornecedor.fornecedor;
return session.query(Fornecedor.class)
.where(query.nomeFantasia.contains(name))
.toList();
}
}
POJOクラス:
@QueryEntity
public class Fornecedor {
private String id;
private String nomeFantasia;
private String cnpj;
private String email;
private Endereco endereco;
private List<Produto> produtosFornecidos;
// getters & setters
}
Applicationクラス:
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/HomePage.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setResizable(false);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
1. DAOから返されたものがリストにあることを確認しましたか? 2.あなたは 'Fornecedor'クラスを含めるために質問を編集できますか? –
また、FXMLファイルには 'fx:controller'属性もありません。コントローラをコードで設定していますか? 'Application'クラスを表示できますか? –
1.はい、しました。私はすでに質問を編集しています。コントローラについて、私はファイルを編集していたので、属性が削除されました。私は再びそれを追加しました! –