2016-12-24 30 views
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); 
} 
} 
+0

1. DAOから返されたものがリストにあることを確認しましたか? 2.あなたは 'Fornecedor'クラスを含めるために質問を編集できますか? –

+0

また、FXMLファイルには 'fx:controller'属性もありません。コントローラをコードで設定していますか? 'Application'クラスを表示できますか? –

+0

1.はい、しました。私はすでに質問を編集しています。コントローラについて、私はファイルを編集していたので、属性が削除されました。私は再びそれを追加しました! –

答えて

0

あなたのFXMLファイルがfx:controller属性が欠落しています。あなたは必要とする:my.packageFXMLHomePageControllerクラスを含むパッケージの名前です

<?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:controller="my.package.FXMLHomePageController" 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"> 

    <!-- ... --> 

</VBox> 

関連する問題