Continuació de la practica: Aplicació d’escriptori JavaFX. Fem servir SceneBuilder per crear les vistes gràfiques.
En la practica anterior, Aplicació d’escriptori JavaFX, havíem arribat a desenvolupar una aplicació amb JavaFX que mostrava els proveïdors d’una base de dades, tal com la següent imatge:
La vista no té cap tipus d’estil. Amb l’eina SceneBuilder hi posarem colors i afegirem un botó i altres components d’una manera gràfica i senzilla.
La pagina de descarrega es la següent:
https://gluonhq.com/products/scene-builder/Cal observar el destí on s’instal·la l’aplicació SceneBuilder, per defecte és:
Users\el teu usuari\AppData\Local\SceneBuilder
En Netbeans anar a: Tools/Options/Java/JavaFX.
En SceneBuilder Home buscar la ruta de l’aplicació SceneBuilder.
Clic en Apply/OK
Al editar el arxius .fxml ja no s’obre el codi sinó l’entorn gràfic de SceneBuilder.
Doble clic en proveidor.fxml, s’obre automàticament SceneBuilder.
Editem la fulla d’estils proveidor.css.
El codi css per l’etiqueta Label és com el següent:
.label{
-fx-font-size: 11pt;
-fx-font-family: "Segoe UI Semibold";
-fx-text-fill: #d45c02;
}
Mida de la lletra d’11 punts
Tipus de lletra
Color de la lletra: salmó
A la dreta en AnchorPane/styleSheets busquem la fulla d’estils proveidor.css:
Necessitem un botó per inserir nous proveïdors i tres textField per escriure el Id, el nom i el telèfon del nou proveïdor.
Canviem les mides del AnchorPane a 1000x800.
Partim la pantalla en dues parts amb SplitPane horizontal, a l’esquerra la TableView i a la dreta el botó, els Labels i els TextFields.
A la dreta col·loquem un GridPane de 2x4.
Arrastrem un botó al GridPane.
Col·loquem tres Labels i també tres TextFields.
En el botó en Properties, canviem el text i posem "Inserir".
El botó necessita un identificador.
En el Code del botó:
En el identificador Fx:id posem btnInserir
On Action: btnInserir_clic (serà el mètode que s’executarà al prémer el botó).
Canviem el text dels Labels, en Properties.
Els textFiels necessiten de un identificador fx:id perquè intervenen en el codi.
txtId
txtNom
txtTelefon
Cal assegurar-se de que el controlador de la vista és la correcte, és troba a l’esquerra en Controller Class.
Guardem els canvis: Ctrl+S
En View/Sample Skeleton copiem els identificadors dels TextFiels i el Button per enganxar en el controlador.
En ControladorProveidor.java, enganxem els atributs del botó, dels TextFields i el mètode d’acció del botó.
Afegim els Imports en el controlador, guardem i executem. El resultat és com el següent:
Els Labels ja tenen estil, el color salmó.
Editem la fulla d’estils proveidor.css
.button{
-fx-background-color:#d45c02;
-fx-font-size:11pt;
-fx-font-family:"Segoe UI Semibold";
-fx-text-fill:white;
-fx-border-color: green,green;
}
.button:hover {
-fx-background-color: #d6f50b;
}
.button:pressed{
-fx-background-color: #f93302;
-fx-shadow-highlight-color: #CCFF99;
}
.text-field{
-fx-font-size: 11pt;
-fx-font-family: "Segoe UI Semibold";
-fx-text-fill: #d45c02;
}
El botó és de color salmó, al passar-hi per sobre ( hover ) és torna de color verd i al clicar-ho ( pressed ) canvia a color vermell.
El textField és de mida de 11 punts, la família de la lletra és la mateixa de tota la vista i de color salmó.
Per veure el resultat en SceneBuilder: Clic Preview/Show Preview in Windows
El botó és de color salmó. Al prémer el botó es vermell i al passar per sobre és verd.
En ControladorProveidor.java posem codi al mètode btnInserir_clic():
@FXML
void btnInserir_clic() {
String id=txtId.getText();
String nom=txtNom.getText();
String telefon=txtTelefon.getText();
if(id.compareTo("")!=0 && nom.compareTo("")!=0 && telefon.compareTo("")!=0){
Proveidor p= new Proveidor();
p.setId(Integer.parseInt(id));
p.setNom(nom);
p.setTelefon(telefon);
controllerJpa.create(p);
llegirProveidorsOmplirTaula();
}else{
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("INSERIR NOU PROVEÏDOR");
alert.setHeaderText("Tots els camps son obigatoris!!");
alert.setContentText("Falta editar camps");
alert.showAndWait();
}
}
Obtenim el id, nom i telèfon dels textFields amb el mètode getText().
Comprovem amb un if si els camps estan plens amb el mètode compareTo("")!=0. Això vol dir que si el camp és diferent de res, continuem amb el codi, altrament passem al else.
A dins del if:
Creem un nou Proveidor p. Assignem a p els valors del id, nom i telèfon amb el setId(valor), setNom(valor), setTelefon(valor). Aquest mètodes estan definits en la classe Proveidor.
Ara intervé el controladorJpa que amb el mètode create(p) insereix el nou proveïdor a la base de dades.
Llegim la base de dades i posem el resultat al tableView amb el mètode llegirProveidorsOmplirTaula()
A dins del else:
Alert que és un missatge d’error (finestra emergent) que explica que hi han camps buits.
Recordem que el mètode llegirProveidorOmplirTaula() explicat en la practica anterior, és com el següent:
Al inserir un nou proveïdor immediatament s’actualitza la taula amb una nova fila del nou proveïdor.
El mar.
Havaneres.
Lloret antic.
Lloret avui.
De cala Morisca a Sa Carabera.
De Sa Carabera a Treumal.
Lloret en kayak.
Vígilancia remota.
Caixa-tpv.
Cambrer-app.
Client webApp.
Relats del banc del si no fos
Històries d'ahir
Vídeos antics de Lloret
El caiac
Contes de l'avi.
Control d’accés amb contrasenya.
Orgue de llums.
Comparativa de editors Arduino.
Projecte bon Nadal.
Control de la qualitat del aire interior (CO2) amb semàfor LED.
NodeMCU-ThingSpeak
ThingSpeak.
NodeMCU com AccessPoint.
Control de la llum de casa per web.
Control de un led per el mòbil.
Sistema de fitxers en ESP8266.
Altura del nivell d'aigua.
Avis d’alarma a Telegram.
Control de la intensitat de llum de un LED per Internet.
Magatzematge de temperatura i humitat en Thinger.
Publicar temperatura i humitat en Google Sheets.
ESP8266 i Firebase.
La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega.
ESP32-CAM
ESP32-CAM captura fotos per ser vistes en la WEB.
Pujar fotos a un servidor FTP amb ESP32-CAM.
MicroPython en ESP8266.
Visual Estudio Code per Arduino.
Classificador d’imatges.
Instal·lar i configurar Apache en Ubuntu.
Accés a un servidor Linux remotament.
Client i Servidor FTP.
Màquina virtual UBUNTU.
WindowsXP en Virtualbox.
Multisim, simulador de circuits electrònics.
Proteus, simulador de circuits electrònics.
MySQL. Instal·lació.
MySQL. Aplicacions.
Netbeans Maven MySQL.
Java+Netbeans+Maven+EclipseLink+Mysql
Aplicació d’escriptori JavaFX
App JavaFX amb SceneBuilder
App Java-Swing

Noves tecnologies WEB Arduino Domótica MycroPython NodeMCU IoT Java ESP8266 Lora C++ Programació Server-Client