×

ARDUINO

Control d’accés amb contrasenya. Orgue de llums. Comparativa de editors Arduino. Projecte bon Nadal. Sensor de gas i de fums. Control de la qualitat del aire interior (CO2) amb semàfor LED.

NodeMCU

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 llum de casa des de 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. ESP8266-BME280 Firebase. La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega..

ESP32

ESP32-CAM, exemple de prova. Esp32-Cam captura fotos per ser vistes en la WEB. Pujar fotos a un servidor FTP amb ESP32-CAM. Foto amb ESP32-CAM i Telegram. Alarma amb avis a Telegram, utilitzant la placa ESP32-CAM.

PROGRAMACIÓ

Matemàtiques. App Inventor tutorial. MicroPython en ESP8266. Visual Estudio Code per Arduino

Intel·ligència artificial

Classificador d’imatges.

SERVIDORS

Instal·lar i configurar Apache en Ubuntu. Accés a un servidor Linux remotament. Client i Servidor FTP.

MÀQUINES VIRTUALS

Màquina virtual UBUNTU. WindowsXP en Virtualbox.

ELECTRÒNICA

Simulador Multisim. Simulador Proteus.

BASE DE DADES

MySQL. Instal·lació. MySQL. Aplicacions.

JAVA

Netbeans Maven MySQL. Java+Netbeans+Maven+EclipseLink+MySQL Aplicació d’escriptori JavaFX App JavaFX amb SceneBuilder App Java-Swing
favicon
logo

Tresavis

Benvinguts al blog de tresavis de noves tecnologies i més.

Correu : tresavis3@gmail.com

facebook   Instagram   youtube   x   tiktok

☰ Pràctiques   ☰ Articles

Vídeo tutoria


Practica anterior

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:

sb2

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.


Instal·lació de SceneBuilder

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

sb3

Configurar SceneBuilder al editor

En Netbeans anar a: Tools/Options/Java/JavaFX.

En SceneBuilder Home buscar la ruta de l’aplicació SceneBuilder.

sb4

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.

sb5

Labels

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ó


Enllaç de la fulla d’estils a SceneBuilder

A la dreta en AnchorPane/styleSheets busquem la fulla d’estils proveidor.css:

sb6

SplitPane

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.

sb7

A la dreta col·loquem un GridPane de 2x4.

sb8

Un botó , tres Labels i tres TextFields

Arrastrem un botó al GridPane.

Col·loquem tres Labels i també tres TextFields.

sb9

En el botó en Properties, canviem el text i posem "Inserir".

sb10

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ó).

sb11

Canviem el text dels Labels, en Properties.

sb12

Els textFiels necessiten de un identificador fx:id perquè intervenen en el codi.

txtId

txtNom

txtTelefon

sb13

Controller Class

Cal assegurar-se de que el controlador de la vista és la correcte, és troba a l’esquerra en Controller Class.

sb14

Guardem els canvis: Ctrl+S


Sample Skeleton

En View/Sample Skeleton copiem els identificadors dels TextFiels i el Button per enganxar en el controlador.

sb15

En ControladorProveidor.java, enganxem els atributs del botó, dels TextFields i el mètode d’acció del botó.

sb16

Afegim els Imports en el controlador, guardem i executem. El resultat és com el següent:

sb17

Els Labels ja tenen estil, el color salmó.


Css del botó i del TextField

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

sb18

El botó és de color salmó. Al prémer el botó es vermell i al passar per sobre és verd.

Codi del controlador

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();
        }
    }
            
        

Explicació del codi

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.

sb19

Recordem que el mètode llegirProveidorOmplirTaula() explicat en la practica anterior, és com el següent:

sb20

Resultat

Al inserir un nou proveïdor immediatament s’actualitza la taula amb una nova fila del nou proveïdor.

sb21

Contingut.


Nosaltres

garbinada1 garbinada2 calma boira bullents




Tags

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