Я пытаюсь заполнить данные автоматически в 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>