Как автоматически заполнить данные в табличном представлении? - PullRequest
0 голосов
/ 22 декабря 2019

Я пытаюсь заполнить данные автоматически в TableView при загрузке экрана графического интерфейса. На данный момент это работает, нажав на кнопку, но это не так, как я хочу. Я создал метод initialize и вставил тот же код, что и в методе кнопки getWallets, потому что я выяснил, как это делается, но по некоторым причинам он не работает.

Можете ли вы, ребята, взглянуть и понять, что не так, пожалуйста?

PS Я нигде не использовал или не назначал метод инициализации, я не уверен, где янужно вызвать его или как он запускается при компиляции программы

класс MainController

public class MainController {
    walletDAO dao = new walletDAO();
    ArrayList<wallet> allwallets = new ArrayList<wallet>();

    @FXML VBox ConsultHR;
    @FXML private Label message;
    @FXML private ListView<ArrayList<wallet>> list;
    @FXML private TableView<wallet> tableViewData;
    @FXML private TableColumn<wallet, String> NameColumn, LocationColumn, TagColumn;

    public void getWallets(ActionEvent event) throws SQLException {
        allwallets = dao.getAllWallets();
        for(wallet w : allwallets) {
            final ObservableList<wallet> data = FXCollections.observableArrayList(w);
            //System.out.println(w);
            System.out.println("DEBUG: Test to check if there is data: >>"+data);
        }

        tableViewData.setItems(FXCollections.observableArrayList(allwallets));

        NameColumn.setCellValueFactory( f -> new SimpleStringProperty(f.getValue().getWalletName()));
        LocationColumn.setCellValueFactory( f -> new SimpleStringProperty(f.getValue().getWalletLocation()));
        TagColumn.setCellValueFactory( f -> new SimpleStringProperty(f.getValue().getWalletTag()));
    }

    public void initialize(URL url, ResourceBundle rb) throws SQLException {
        allwallets = dao.getAllWallets();
        for(wallet w:allwallets) {
            final ObservableList < wallet> data = FXCollections.observableArrayList(w); 
            System.out.println("DEBUG: Test to check if there is data: >>"+data);
        }

        tableViewData.setItems(FXCollections.observableArrayList(allwallets));

        NameColumn.setCellValueFactory( f -> new SimpleStringProperty(f.getValue().getWalletName()));
        LocationColumn.setCellValueFactory( f -> new SimpleStringProperty(f.getValue().getWalletLocation()));
        TagColumn.setCellValueFactory( f -> new SimpleStringProperty(f.getValue().getWalletTag()));
    }
}

Main.fxml

<AnchorPane prefHeight="269.0" prefWidth="403.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController">
    <Button layoutX="149.0" layoutY="251.0" mnemonicParsing="false" onAction="#getTags" prefHeight="46.0" prefWidth="82.0" text="tags" />
    <Label fx:id="message" layoutX="139.0" layoutY="209.0" prefHeight="35.0" prefWidth="101.0" />
    <ListView id="studentObservableList" fx:id="list" layoutY="209.0" prefHeight="131.0" prefWidth="139.0" />

    <TableView fx:id="tableViewData" prefHeight="200.0" prefWidth="231.0" style="-fx-border-color: red;">
        <columns>
            <TableColumn fx:id="NameColumn" prefWidth="75.0" text="Name"/>
            <TableColumn fx:id="LocationColumn" prefWidth="75.0" text="Location" />
            <TableColumn fx:id="TagColumn" prefWidth="75.0" text="Tag" />
        </columns>
    </TableView>

    <Button layoutX="251.0" layoutY="14.0" mnemonicParsing="false" onAction="#getWallets" prefHeight="56.0" prefWidth="82.0" text="wallets" />
</AnchorPane>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...