• 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
485 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ź 228 wizyt
pytanie zadane 25 grudnia 2016 w Java przez Kapi2222 Obywatel (1,220 p.)
0 głosów
1 odpowiedź 930 wizyt
pytanie zadane 8 września 2018 w Java przez ILikeJava Obywatel (1,230 p.)
0 głosów
1 odpowiedź 507 wizyt
pytanie zadane 9 sierpnia 2018 w Java przez NyguseK Użytkownik (650 p.)

92,973 zapytań

141,937 odpowiedzi

321,173 komentarzy

62,301 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...