classe de controle - Prof. Vicente P. de Camargo

Propaganda
JavaFX
Classe de Controle e Eventos
Prof.Vicente Paulo de Camargo
Classe de Controle e Eventos










Labels são componentes que permitem auxiliar na compreensão de uma
interface gráfica, principalmente para indicar as identificações de elementos em
uma interface gráfica
Um componente Label geralmente possui um texto de identificação
Nas aplicações com internacionalização, os labels devem ser bem identificados
(como variáveis) para facilitar a alteração do idioma
As caixas de textos (TextField) permitem a entrada de dados pelo usuário
Uma caixa de texto permite conteúdos alfanuméricos
Para validar o conteúdo de uma caixa de texto é necessário utilizar de
recursos específicos da plataforma ou de codificação específica
Os botões (Button) permitem efetuar certas ações quando forem clicados
A maioria dos componentes JavaFX permitem executar diversos eventos
Uma caixa de texto possui, por exemplo, os eventos receber foco, perder foco,
receber a digitação de uma tecla e outros
Um botão pode receber evento de clicar do botão esquerdo ou direito, por
exemplo
Classe de Controle e Eventos





Um componente JavaFX possui propriedades como tamanho e
altura, por exemplo, e também pode receber eventos realizados
pelo usuário como click do mouse, perder o foco e outros
Um evento é, portanto, uma ação que o usuário efetua sobre algum
componente existente na interface gráfica
O JavaFX permite associar uma classe de controle com o
arquivo FXML de uma determinada interface gráfica (ou visão)
Essa classe de controle permite ao JavaFX tratar os eventos que
o usuário efetuará na interface gráfica sobre caixas de texto,
botões e outros elementos disponíveis em uma interface gráfica
Um evento corresponde a um método no código Java e esse
código Java deve, preferencialmente, estar na classe de controle
associada ao arquivo FXML da respectiva interface gráfica (ou
visão).
Classe de Controle e Eventos
Com o projeto SceneBuilderExemplo aberto no Eclipse, crie o pacote controle.
Em seguida, crie a classe ViewControle.java no pacote controle
Abra o arquivo ViewFXML.fxml pelo Scene Builder
Acesse a aba Controller, abaixo da aba Hierarchy, no lado esquerdo do Scene Builder
E informe a expressão controle.ViewControle (pacote e nome da classe de controle)
Salve as mudanças no Scene Builder
Classe de Controle e Eventos
Código sem a
classe de
controle
Código com a
classe de
controle
Referência
da classe de
controle
Classe de Controle e Eventos
Com o Scene Builder ainda aberto com o arquivo ViewFXML.fxml
Acesse a opção O View / Show Sample Controller Skeleton 1
Será apresentada a janela Sample Sekeleton For ViewFXML.fxml Controller Class 2
Clique no botão Copy dessa Janela para copiar o seu conteúdo para a memória
Acesse o código da classe ViewControle.java, apagando todo o seu código e copiando o
conteúdo da memória para essa classe
Salve a classe ViewControle.java
1
2
Classe de Controle e Eventos
Criando Eventos
Agora a classe de controle ViewControle.java possui as referências
dos controles (agora objetos) criados pelo Scene Builder
Vamos criar um evento para o botão btnIncluir
Para isso, volte ao Scene Builder e selecione o botão btnIncluir
Acesse a aba Code, do lado direito do Scene Builder
Selecione a caixa de texto On Action e informe
btnIncluirOnAction
Esse será o nome do método quando esse botão for clicado
Aba Code
On Action
Selecionado
Classe de Controle e Eventos
Criando Eventos
Salve o as mudanças no Scene Builder
Acesse novamente a opção View e copie apenas o trecho do novo
código gerado e cole-o no final da classe ViewControle.java
Ajuste o arquivo FXML no Eclipse
e cole
Copie esse trecho
Classe de Controle e Eventos
Ajuste o erro na classe com ctrl+shift+o para importar a classe
necessária e selecione a opção indicada a seguir
I
2
Em seguida, ajuste o código do
Método btnIncluirOnAction
3
Observe as alterações
Classe de Controle e Eventos
A classe de controle ViewControle utiliza a classe Alert para
apresentar uma caixa de dialogo de mensagens
Trecho para apresentação
de mensagens com a classe Alert
Classe de Controle e Eventos
A classe de controle ViewControle utiliza a classe Alert para
apresentar uma caixa de dialogo de mensagens
title
headerText
Texto da mensagem
Classe de Controle e Eventos
Para que se possa abrir a janela (ou visão) ViewFXML.fxml será
necessário alterar o código da classe principal da aplicação, a qual deverá
referenciar o arquivo ViewFXML.fxml para abrir a respectiva janela
Novo código
Código atual
Classe de Controle e Eventos
Aplicação em tempo de execução
Após clique do mouse sobre o botão Incluir
Classe de Controle e Eventos
Outras formas de expressar o evento do botão btnIncluir
Segunda forma:
Dentro do método initialize
com expressão lambda:
btnIncluir.setOnAction((event) -> {
Alert alert;
alert = new Alert(AlertType.INFORMATION,"Você Clicou no Botão Incluir",ButtonType.OK);
alert.setTitle("Mensagem");
alert.setHeaderText("Informação");
alert.show();
});
sem expressão lambda:
btnIncluir.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
//código
}
});
Classe de Controle e Eventos
Outras formas de expressar o evento do botão btnIncluir
Terceira forma:
Fora do método initialize:
//Parte I
private void handleButtonAction(ActionEvent event) {
// o botão foi clicado, faz algo
}
Dentro do método initialize
//Parte II
btnIncluir.setOnAction(this::handleButtonAction);
Classe de Controle e Eventos
Evento de foco com TextField
Devem ser codificados dentro de initialize através do método
focusedProperty()
nomeFuncionario.focusedProperty().addListener(new javafx.beans.value.ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean velhoValor, Boolean novoValor) {
if (!novoValor)
{
Alert alert;
alert = new Alert(AlertType.INFORMATION,"Desfocado",ButtonType.OK);
alert.setTitle("Mensagem");
alert.setHeaderText("Informação");
alert.show();
}
else
{
System.out.println(“FOCOU”);
}
}
});
Exercício
Desenvolva uma aplicação orientada a objetos com o uso de MVC e
JavaFX, a qual deve permitir o cadastro pessoas, com nome e cpf (cuja
chave primária é inteira e incremental), em um banco de dados. Não
será permitido o cadastro de pessoas com o mesmo cpf e os nomes
devem ser atualizados no banco de dados em caixa alta. A aplicação
deve:
a)Apresentar uma tela de manutenção de dados de pessoas para
incluir, alterar e excluir pessoas
b)Para alterar ou excluir deve-se informar o código da pessoa para que
o sistema possa pesquisar os dados e preencher a tela de cadastro
para que o usuário possa efetuar a respectiva atualização
c)Deve-se utilizar botões para efetuar as respectivas ações de incluir,
alterar ou excluir
d)Utilizar uma classe para apresentar mensagens específicas de erro ou
de operação concluída
FIM
Download