Agenda telefônica com Arduíno e JFX para enviar SMS, receber e fazer ligações




Este artigo sera tratado como um mini guia contendo uma versão em pdf

 Irar abordar uma artigo que contia uma agenda telefônica... que
pode ser lida neste LINK

Porem por este artigo conter banco de dados , Arduíno e outras tecnologia que
o  torna mais usável, decidi que é hora de criar um mini guia e ao mesmo tempo
um artigo para pesquisas adiante.
Esta agenda telefônica, conta com JFX ,banco de dados MYSQL alem de Arduíno e shilds para gsm
tentarei fazer um artigo legível tanto a estudantes iniciante quando a programadores com experiencia

Os dados e diagramas do projetos serão  salvos em uma pasta no Google drive
onde sera possível acessar e verificar os arquivos correspondente as suas tecnologias

Sua atualização sera implementar o banco de dados para salvar e editar dados
 de contatos na internet e no próprio computador permitindo acessar os dados
da agenda telefônica e fazer as ligações e sms a partir de qualquer computador
reforçando o conceito Write once, run anywhere ...X)
portanto esta sera a segunda (2³) parte do projeto que também salvarei no guia pdf


A parte 3 do artigo e mini guia sera o implementar o  Arduíno
com o layout do aplicativo que sera feito na parte 1 e o gerenciamento de dados
que sara feito na parte dois.
 Então  precisaremos finalizar com a parte 3 que irar fazer conexão do Arduíno com o java
tendo em vista o download das bibliotecas necessárias tanto no  Arduíno quanto no Java

Apesar de muito conteúdo ,sera feito em um curto espaço de tempo
pois tenho vários outros artigo para adicionar ao blog...que não foram adicionado neste ultimo ano

Para não deixar assuntos em branco o artigo irar contar com um conteúdo
completo ou seja iremos rever informações sobre o que é javafx  ate
 a finalização do aplicativo que irar fazer e receber ligações alem de enviar e receber sms também

espero que goste e utilize este artigos para estudos e guia de pesquisas

boa leitura
blog bem10jfx.blogspot.com


      o que é java fx?

 Javafx (Form Follows Function) faz parte da tecnologia Java.
 É Projetada para ser uma plataforma de interfaces ricas.
 É utilizada em web, desktop, celulares, set-box, ate em carros e aviões.
JFX2.0 ou superior foi adicionada no JSE7 e versões anteriores lançadas
 como sdk's independentes.
Possui características de aceleração de hardware, interface moderna,
 é compatível com toda library Java, alem de rápido, e seguro, possui uma proposta
 " Write once, run anywhere "

voce poderar ter mais detalhers no proprio site da java
http://java.com/javafx


    Criando Controles
Seguindo um diagrama os controles deveria se ser observado da seguinte maneira



Se seguiu diagrama do o artigo o layout do aplicativo ficaria assim

Observe o código fonte das classes de controles <link>aqui</link>.
Código 1 salvo
https://pastebin.com/PW67Sz5K
Código 2 salvo
https://pastebin.com/pCxbsC4m
Com o os controles prontos deveremos adicionar ainda neste artigo binds, css e ajustar alguns valores de certas propriedades
seguindo por partes
 1° iniciando propriedades de bind no hbprimeiro
ele deve ficar centralizado a tela...possivelmente direcionando sua localidade
A partir da propriedade de tamanho de altura e largura  da scene


Repare:

 vboxPrimeiro.layoutXProperty().bind(scene.widthProperty().divide(6).subtract(20));
  vboxPrimeiro.layoutYProperty().bind(scene.heightProperty().divide(6).subtract(15)); 
     
   
   Para indicar a localidade inicial X da classes vbprimero
o bind irar dividir em 6 partes iguais o valor do tamanho da tela ,na classe Scene e
 adicionar o valor( - 20 ) e setar o resultado nas propriedades de layoutX do hbprimeiro
a resposta para isso seria algo assim

   scene.width=410;
   bind = dividido por (6 ou propriedade de classe) ;
   subtract=-20;

 então "layoutX" do vbprimeiro e igual a

 (scene.width/bind)-subtract=hbprimeiro.setlayoutX();
  (410/6)-20=48,333...

e logicamente seguindo as regras de sinais, ao sair do ( )
Sinais diferentes: nesta condição subtrai e conserva o sinal do maior valor...

por isso a localidade do layout esta em 48,3 da Clase Scene.width
e ao diminuir ou maximizar a tela este valor sera ajustado para + ou -
o mesmo acontece para valores de bind que estão definindo a altura  ou layoutY


Logo depois de adicionar classes ao VBox  ou ao HBox você não poderá mais definir
localidades para classes da hierarquia filhos ( classes que estiverem dentro do HBox OU VBox)
porem pode adicionar valores ao width e height altura e largura das classes filhos(.getChildrens.addAll();)



Feito isso vamos adicionar CSS ao projeto
o que é css?
CSS  Cascading Style Sheets
CSS permite criar um layout padrão para a Scene e componentes  com mais possibilidade e rapidez de forma simples

acredito que a https://www.w3schools.com/css/css_intro.asp pode esclarecer muitas duvidas.
https://pt.wikipedia.org/wiki/Cascading_Style_Sheets

nao tenho muito o que falar sobre css
mais utilizaremos um templete css externo  e utilizaremos css no codigo tambem.

para adicionar css ao projeto basta
utilizar métodos chamando arquivos .css ou adicionando ao código....
 para adicionar um arquivo css a partir do diretório raiz do projeto...ou seja dentro da .jar

scene.getStylesheets().addAll("" + getClass().getResource("TemaCarro_line.css"));

 uma mareira rápida de utilizar css é utilizando o setStyle ....irar atuar a partir de trecho do código css
repare bem
vbbprimeiro=new VBox(10);
 vboxprimeiro.setStyle("-fx-background-color:#000000;\n"
                + "    -fx-border-radius: 10;\n"
                + "    -fx-background-radius: 15;\n"
                + "    -fx-padding: 5;");

se conseguiu  ate aqui o aplicativo deve estar assim



 Código fonte javafx
 https://pastebin.com/qbd9Vub5
 Código fonte css
CSS
https://pastebin.com/G5gUCLze




banco de dados
 banco de dados  logica mente são estrutura que gerencia dados destintos
  usaremos banco de dados MySQL
 para isso utilizaremos um servidor Xampp , pois acredito que é um dos melhores servidores para se trabalhar e estudar alem de agradável...mais existe ótimos servidores disponível

faça o download  salve-o na unidade c:\
execute o xampp
ele deve aparecer  nos ícones da barra de propriedades


Clique em start a partir daqui iremos criar o banco de dados a partir de um terminal prompt de comando
abra o prompt de comando ou crie um lote com estes comandos
a estrutura dos dados devera estar próxima a esta
...

..
se você tem pouca experiencia com banco de dados...você precisa estudar um pouco este artigo do devmedia é um artigo muito completo que vale apena ser abordado em MYSQL. para visualizar o artigo da devmedia clique AQUI.
Vamos deixar uma ancora aqui ...logo voltaremos a falar sobre mysql depois que fizermos o download JDBC X).


  Adicione a biblioteca como descrito na imagem abaixo
projeto>>propriedades>>bibliotecas>>adicionar bibliotecas>>DRIVE JDBC do MYSQL
ou baixe e clique em adicionar" jar\pastas"


Agora que criamos o banco de dados e adicionamos a biblioteca responsável por fazer a conexão com o mysql vamos volta a ancora ...e trabalhar no código

Iremos utilizar poucas linhas de comando e muitas requisições para ler o banco alem de criar dados e excluir e editar.

Recomendo que leia este site antes de prosseguir
devmedia
para criar uma comunicação e ler o nosso banco de dados
criaremos uma nova classe publica que sera acessada a partir da inicialização do programa e acada ação de button e listview
Quando clicado num botão ,inicia um método para receber uma variável e igualar a variável principal
Repare nesta classe que recebe as condição de todos comando das variáveis
...

...

agora repare neste método do listview...
o listview faz uma pesquisa e trás as informações apenas dos dados selecionado
para iniciar uma pesquisa através do nome selecionado
utilize o método selectModel.

...

...

Este método irar retornar a classe mysqlsddlol(){} a variável
 Executebd==strpesquisalista...igualando as condições , como o nome já diz faz uma pesquisa através do listview ...selecionando o "new_value" que é o valor selecionado no momento e pesquisando os dados através apenas do nome
para a ver um atraso de resposta na variável  e indicar o valor anterior clicado...set a variável como "old_value"

Salvando dados
Seguindo  o mesmo código da classe mysqlsddlol()
para salvar os dados através de uma ação de button, utilizando uma expressão Lambda

...

...

Excluindo dados
Seguindo  o mesmo código da classe mysqlsddlol()
para excluir  os dados através de uma ação de button utilizando uma expressão  de evento OnMouseAction

...

...

na segunda parte do artigo o assunto sera javamail e apachecommons
enviando e-mail através informações contidas no banco de dados
boa leitura.
Código fonte :Aqui
Download
...

Comentários