• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaFX - zapisanie nowego obiektu, i powołania nowego przy zmianie sceny.

VPS Starter Arubacloud
0 głosów
469 wizyt
pytanie zadane 26 grudnia 2016 w Java przez Kapi2222 Obywatel (1,220 p.)

Hej :)

Załóżmy, że jest sobie klasa 'Instrument', scena 'AddInstrument.fxml' i oczywiście kontroler do niej 'AddInstrumentController' .

Kiedy użytkownik w GUI wejdźie do tej sceny, to może wyspecyfikować obiekt Instrument np. nadać nazwę, rodzaj itp.

Teraz pytanie: Jak mam zapisać obiekt, który zmodyfikuje użytkownik?? Chce go zapisać przyciskiem zatwierdź i wyjść ze sceny. Ale jak do niej ponownie wrócę to chciałbym powołać nowy obiekt aby użytkownik znowu mógł dodać nowy instrument, zapisać go i tak w kółko :)

To jest skrót kodu, to jest to o co mi chodzi:

Instrument Class:

public class Instrument {

    //example of fields which user can specify
    private StringProperty name= new SimpleStringProperty();
    private StringProperty kindOfInstrument = new SimpleStringProperty();

    //Getters and setters
    public String getName() {
        return name.get();
    }

    public StringProperty nameProperty() {
        return name;
    }

    public void setName(String name) {
        this.name.set(name);
    }

    public String getKindOfInstrument() {
        return kindOfInstrument.get();
    }

    public StringProperty kindOfInstrumentProperty() {
        return kindOfInstrument;
    }

    public void setKindOfInstrument(String kindOfInstrument) {
        this.kindOfInstrument.set(kindOfInstrument);
    }
}

AddInstrumentSceneController :


public class Controller implements Initializable{

    @FXML
    private TextField name;
    @FXML
    private TextField kindOfInstrument;


    /**
     * On this object user can specify attributes of his instrument
     */
    Instrument instrument = new Instrument();


    @Override
    public void initialize(URL location, ResourceBundle resources) {
        //binding Properties of controlls with Properties from Instrument class
        name.textProperty().bindBidirectional(instrument.nameProperty());
        kindOfInstrument.textProperty().bindBidirectional(instrument.kindOfInstrumentProperty());

    }
}

Będę wdzięczny za każde protipy! Bo jak narazie to tworzę tylko jeden obiekt typu instrument, i jak wracam do sceny to wszystko na tym samym obiekcie się dzieje a ja chce to zapisać i na nowym robić :D Proszę o pomoc i dziękuję :)

1 odpowiedź

0 głosów
odpowiedź 28 grudnia 2016 przez K0XM4N Gaduła (3,640 p.)
Spróbuj podejść do tego w taki sposób, że dodatkowo utworzysz sobie klase Serwisu dla AddInstrumentScene. Serwis ten będzie posiadać logikę biznesową. Dodaj metody odpowiedzialne za utworzenie nowego instrumentu, metodę która będzie dodawać te instrumenty do np. listy, wyświetlanie wszystkich obiektów znajdujących się na liście itd. Następnie po wejściu w okienko AddInstrumentScene w metodzie initialize tworzysz sobie obiekt Serwisu. W głównym kontrolerze dodajesz metody które będą wykonywać operacje serwisu, gdy użytkownik kliknie coś na GUI. Oczywiście w GUI czyli FXML podpinasz odpowiednie metody kontrolera głównego, które będą wywoływane :).

Daj znać czy o to chodziło :)

Podobne pytania

0 głosów
1 odpowiedź 201 wizyt
pytanie zadane 25 grudnia 2016 w Java przez Kapi2222 Obywatel (1,220 p.)
0 głosów
1 odpowiedź 856 wizyt
pytanie zadane 8 września 2018 w Java przez ILikeJava Obywatel (1,230 p.)
0 głosów
1 odpowiedź 493 wizyt
pytanie zadane 9 sierpnia 2018 w Java przez NyguseK Użytkownik (650 p.)

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...