Cześć
Potrzebuje pomocy aby dane z tabeli w JavieFX które dodaje zapisać do pliku dane.xlsx w projekcie a przy otwarciu ponownym apki je wczytywało.
Wszędzie gdzie patrzę na stronach obsługa odbywa się za pomocą przycisku.
Jeżeli chodzi o zapis ok może odbywać się za pomocą przycisku i nadpisywać plik z nowymi danymi, lecz odczyt chciałbym aby odbywał się po załadowaniu automatycznie okna z tabelą.
Dodam że projekt jest w mavenie i wtyczkę POI mam już podpiętą pod pom-a.
wrzucam mój controller od okna:
package sample.Controllers;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import sample.Utils.StopLista;
import java.net.URL;
import java.util.ResourceBundle;
public class StopController implements Initializable {
@FXML
private TableView<StopLista> tableView;
@FXML
private TableColumn<StopLista, String> dateColumn;
@FXML
private TableColumn<StopLista, String> orderColumn;
@FXML
private TableColumn<StopLista, String> modelColumn;
@FXML
private TableColumn<StopLista, String> changeColumn;
@FXML
private TableColumn<StopLista, String> timeColumn;
@FXML
private TableColumn<StopLista, String> personColumn;
@FXML
private TableColumn<StopLista, String> commentsColumn;
@FXML
TextField dateText;
@FXML
TextField orderText;
@FXML
TextField modelText;
@FXML
TextField changeText;
@FXML
TextField timeText;
@FXML
TextField personText;
@FXML
TextField commentsText;
public StopController() {
}
@Override
public void initialize(URL location, ResourceBundle resources) {
dateColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("data"));
orderColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("zlecenie"));
modelColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("model"));
changeColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("zmiana"));
timeColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("czas"));
personColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("osoba"));
commentsColumn.setCellValueFactory(new PropertyValueFactory<StopLista, String>("uwagi"));
tableView.setItems(addList());
tableView.setEditable(true);
dateColumn.setCellFactory(TextFieldTableCell.forTableColumn());
orderColumn.setCellFactory(TextFieldTableCell.forTableColumn());
modelColumn.setCellFactory(TextFieldTableCell.forTableColumn());
changeColumn.setCellFactory(TextFieldTableCell.forTableColumn());
timeColumn.setCellFactory(TextFieldTableCell.forTableColumn());
personColumn.setCellFactory(TextFieldTableCell.forTableColumn());
commentsColumn.setCellFactory(TextFieldTableCell.forTableColumn());
}
public void addRowToTable() {
StopLista nowyRekord = new StopLista(dateText.getText(), orderText.getText(), modelText.getText(),
changeText.getText(), timeText.getText(), personText.getText(), commentsText.getText());
tableView.getItems().add(nowyRekord);
dateText.clear();
orderText.clear();
modelText.clear();
changeText.clear();
timeText.clear();
personText.clear();
commentsText.clear();
}
public void delateRowTable() {
ObservableList<StopLista> wybranyRekord, wszystkieRekordy;
try {
wszystkieRekordy = tableView.getItems();
if (wszystkieRekordy.size() != 0) {
wybranyRekord = tableView.getSelectionModel().getSelectedItems();
wybranyRekord.forEach(wszystkieRekordy::remove);
}
} catch (Exception e) {
//tabela jest pusta - nic się nie dzieje
}
}
public ObservableList<StopLista> addList() {
ObservableList<StopLista> orderList = FXCollections.observableArrayList();
return orderList;
}
public void editData(TableColumn.CellEditEvent cellEditEvent){
StopLista zmDaty = tableView.getSelectionModel().getSelectedItem();
zmDaty.setData(cellEditEvent.getNewValue().toString());
}
public void editOrder(TableColumn.CellEditEvent cellEditEvent){
StopLista zmZlecenia = tableView.getSelectionModel().getSelectedItem();
zmZlecenia.setZlecenie(cellEditEvent.getNewValue().toString());
}
public void editModel(TableColumn.CellEditEvent cellEditEvent){
StopLista zmModelu = tableView.getSelectionModel().getSelectedItem();
zmModelu.setModel(cellEditEvent.getNewValue().toString());
}
public void editChange(TableColumn.CellEditEvent cellEditEvent){
StopLista zmZmiany = tableView.getSelectionModel().getSelectedItem();
zmZmiany.setZmiana(cellEditEvent.getNewValue().toString());
}
public void editTime(TableColumn.CellEditEvent cellEditEvent){
StopLista zmCzasu = tableView.getSelectionModel().getSelectedItem();
zmCzasu.setCzas(cellEditEvent.getNewValue().toString());
}
public void editPerson(TableColumn.CellEditEvent cellEditEvent){
StopLista zmOsoby = tableView.getSelectionModel().getSelectedItem();
zmOsoby.setOsoba(cellEditEvent.getNewValue().toString());
}
public void editComments(TableColumn.CellEditEvent cellEditEvent){
StopLista zmUwag = tableView.getSelectionModel().getSelectedItem();
zmUwag.setUwagi(cellEditEvent.getNewValue().toString());
}
}
PS. jak wskazuje plik mam podpięte jeszcze w innej klasie konstruktory, gettery i settery żeby nie było że nie wrzucam całości.