Cześć wszystkim, próbuję zrobić prosty program to tworzenia listy zakupów, a następnie zapisania jej do pliku .txt, lecz mam problem w postaci takiej, że po odpaleniu programu lista jest pusta, choć wygląda na to, że coś się do niej dodaje bo mogę dodawać i usuwać zaznaczone wiersze. Chciałbym was prosić o pomoc w odnalezieniu błędu.
import javafx.scene.*;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.stage.Stage;
public class Main extends Application {
Stage okno;
TableView<Produkt> tabela;
TextField nazwaWejscie, iloscWejscie;
public static void main(String[] args) {
launch(args);
}
@SuppressWarnings("unchecked")
@Override
public void start(Stage primaryStage) throws Exception {
okno = primaryStage;
okno.setTitle("Stwórz listę zakupów");
// Kolumna nazwa
TableColumn<Produkt, String> kolumnaNazwa = new TableColumn<>("Name");
kolumnaNazwa.setMinWidth(200);
kolumnaNazwa.setCellValueFactory(new PropertyValueFactory<>("name"));
// Kolumna ilosc
TableColumn<Produkt, Double> kolumnaIlosc = new TableColumn<>("Price");
kolumnaIlosc.setMinWidth(100);
kolumnaIlosc.setCellValueFactory(new PropertyValueFactory<>("price"));
// Wprowadź nazwę
nazwaWejscie = new TextField();
nazwaWejscie.setPromptText("Nazwa");
nazwaWejscie.setMinWidth(100);
// Wprowadź ilość
iloscWejscie = new TextField();
iloscWejscie.setPromptText("Ilość");
// Przyciski
Button dodaj = new Button("Dodaj");
dodaj.setOnAction(e -> kliknijDodaj());
Button usun = new Button("Usuń");
usun.setOnAction(e -> kliknijUsun());
// Button stworzListe = new Button("Zapisz listę");
// stworzListe.setOnAction(e -> zapiszListe());
HBox pojemnik = new HBox();
pojemnik.setPadding(new Insets(10, 10, 10, 10));
pojemnik.setSpacing(10);
// wstaw pola i przyciski w jeden rząd
pojemnik.getChildren().addAll(nazwaWejscie, iloscWejscie, dodaj, usun);
tabela = new TableView<>();
tabela.setItems(getProdukt());
tabela.getColumns().addAll(kolumnaNazwa, kolumnaIlosc);
VBox vBox = new VBox();
vBox.getChildren().addAll(tabela, pojemnik);
Scene scena = new Scene(vBox);
okno.setScene(scena);
okno.show();
}
// Funkcja dodania produktu
public void kliknijDodaj() {
Produkt Produkt = new Produkt();
Produkt.setNazwa(nazwaWejscie.getText());
Produkt.setIlosc(Double.parseDouble(iloscWejscie.getText()));
tabela.getItems().add(Produkt);
nazwaWejscie.clear();
iloscWejscie.clear();
}
// Funkcja usunięcia produktu
public void kliknijUsun() {
ObservableList<Produkt> ProduktWybrany, wszystkieProdukty;
wszystkieProdukty = tabela.getItems();
ProduktWybrany = tabela.getSelectionModel().getSelectedItems();
ProduktWybrany.forEach(wszystkieProdukty::remove);
}
// Funkcja dodania listy do pliku
// public void zapiszListe(){
//
// }
public ObservableList<Produkt> getProdukt() {
ObservableList<Produkt> produkty = FXCollections.observableArrayList();
produkty.add(new Produkt("Jajka", 10));
produkty.add(new Produkt("Szynka", 0.5));
return produkty;
}
}
public class Produkt {
private String nazwa;
private double ilosc;
public Produkt(){
this.nazwa = "";
this.ilosc = 0;
}
public Produkt(String nazwa, double ilosc){
this.nazwa = nazwa;
this.ilosc = ilosc;
}
public String getNazwa() {
return nazwa;
}
public void setNazwa(String nazwa) {
this.nazwa = nazwa;
}
public double getIlosc() {
return ilosc;
}
public void setIlosc(double ilosc) {
this.ilosc = ilosc;
}
}