Tutorial pentru stocarea datelor javafx 8 - partea 5 în xml

Tutorial pentru stocarea datelor javafx 8 - partea 5 în xml

  • Stocarea datelor în XML
  • Folosind componenta JavaFX FileChooser
  • Utilizarea meniului JavaFX
  • Salvarea căii spre ultimul fișier deschis în setările utilizatorului

Salvarea setărilor de utilizator

Datorită clasei Preferințe. Java vă permite să salvați câteva informații despre starea aplicației. În funcție de sistemul de operare, preferințele sunt stocate în diverse locuri (de exemplu, în fișierul de registry Windows).

Următoarele două metode oferă salvarea și restaurarea setărilor aplicației noastre. Adăugați-le la sfârșitul clasei MainApp:

MainApp.java

Stocarea datelor în XML

De ce XML?

Una dintre metodele cele mai comune de stocare a datelor este utilizarea de baze de date. În timp ce datele de care avem nevoie pentru a stoca sunt obiecte, bazele de date le conțin sub formă de date relaționale (de exemplu, tabele). Aceasta se numește nepotrivire obiect-relațională a impendențelor. Pentru a aduce datele obiectului în concordanță cu tabelele relaționale, sunt necesare lucrări suplimentare. Există cadre care ajută la aducerea datelor obiect în linie cu baza de date relațională (Hibernate este una dintre cele mai populare), dar pentru a începe să le folosiți, trebuie să faceți și alte lucrări și personalizări.

Pentru modelul nostru simplu de date, este mult mai ușor să stocăm datele ca XML. Pentru a face acest lucru, vom folosi biblioteca JAXB (J ava A rchitechture pentru X ML B inding). Dacă scriem doar câteva linii de cod, JAXB ne va permite să generăm un fișier XML similar:

Exemplu de fișier XML generat

Utilizând JAXB

Biblioteca JAXB este deja inclusă în JDK. Aceasta înseamnă că nu trebuie să fie conectate biblioteci suplimentare.

JAXB oferă două funcții principale: capacitatea de a marchaliza obiecte Java în XML și delimita inversarea de la un fișier xml la obiecte Java.

Pentru ca JAXB să efectueze astfel de transformări, trebuie să ne pregătim modelul.

Pregătirea modelului de clasă JAXB

Creați o nouă clasă PersonListWrapper în pachetul ch.makery.address.model.

PersonListWrapper.java

Observați cele două adnotări:

  • @XmlRootElement specifică numele elementului rădăcină.
  • @XmlElement este un nume opțional pe care îl putem specifica pentru un element.

Citirea și scrierea datelor utilizând JAXB

Faceți clasa noastră MainApp responsabilă pentru citirea și scrierea datelor din aplicația noastră. Pentru aceasta, adăugați două metode la sfârșitul clasei MainApp.java:

Marshalling și demarchezing sunt gata. Acum, pentru a utiliza noile funcționalități, să creăm elemente de meniu pentru salvare și încărcare.

Acțiuni de meniu de procesare

Am creat deja un meniu în fișierul RootLayout.fxml. dar nu l-au folosit încă. Înainte de a adăuga comportament la meniul nostru, să creăm toate elementele necesare în el.

În aplicația Scene Builder, deschideți fișierul RootLayout.fxml și mutați numărul necesar de elemente de meniu (MenuItem) din fila Bibliotecă în fila Ierarhie. Creați următoarele elemente de meniu: Nou. Deschideți. . Salvare. Salvați ca. și ieșire.

Tutorial pentru stocarea datelor javafx 8 - partea 5 în xml

Sfat: pentru a seta elementele de meniu rapidă Utilizați proprietatea Accelerator din fila Proprietăți.

Class RootLayoutController

Pentru a procesa comportamentul meniului, avem nevoie de un alt controler de clasă. În pachetul ch.makery.address.view, creați o clasă RootLayoutController.

RootLayoutController.java

Componenta FileChooser

Rețineți metodele din clasa RootLayoutController. care utilizează componenta FileChooser. Mai întâi, vom crea o nouă instanță a clasei FileChooser. Apoi, aplicați filtrul extensie - când selectați fișiere, vor fi afișate numai cele care au extensia .xml. În cele din urmă, afișăm această componentă deasupra PrimaryStage.

Dacă utilizatorul închide dialogul de selectare a fișierelor fără a selecta nimic, atunci returnarea este returnată. În caz contrar, vom lua fișierul selectat și îl vom transfera în metoda loadPersonDataFromFile (.) Sau savePersonDataToFile (.). care se află în clasa MainApp.

Legarea vizualizării FXML la clasa de controler

În aplicația Scene Builder, deschideți fișierul RootLayout.fxml. În fila Controlor, selectați RootLayoutController ca clasă de controler.

Faceți clic pe fila Ierarhie și selectați elementul de meniu. În fila Cod, ca valori ale proprietății On Action, puteți vedea toate metodele disponibile ale clasei de controler selectate. Selectați metoda care corespunde acestui element de meniu.

Tutorial pentru stocarea datelor javafx 8 - partea 5 în xml

Repetați pasul anterior pentru fiecare element de meniu.

Închideți aplicația Scenic Builder și actualizați proiectul (faceți clic pe Actualizați (F5) în directorul rădăcină al proiectului dvs.). Acest lucru va permite mediului de dezvoltare Eclipse să "vadă" modificările făcute în aplicația Scenic Builder.

Conectarea clasei principale la clasa RootLayoutController

Deschideți clasa MainApp și înlocuiți metoda initRootLayout () cu următorul cod:

Rețineți cele două modificări: pe liniile care permit accesul controlerului la clasa principală a aplicației și ultimele trei linii pentru a încărca ultimul fișier deschis cu înregistrări.

testarea

În interiorul pachetului ch.makery.address.util, creați o nouă clasă LocalDateAdapter și copiați următorul cod:

LocalDateAdapter.java

Apoi deschideți clasa Person.java și adnotați metoda getBirthday ():

Acum, porniți din nou aplicația. Încercați să salvați și să încărcați fișierul xml cu datele. Aplicația trebuie să descarce automat ultimul fișier deschis după repornire.

Cum funcționează

Să vedem cum funcționează toate împreună:

Ce urmează?

În partea a șasea a manualului vom adăuga un calendar statistic al zilelor de naștere.

Ați putea fi, de asemenea, interesat de alte articole

Articole similare