47
JavaFX Classe de Controle e Eventos Prof.Vicente Paulo de Camargo

JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

JavaFX

Classe de Controle e Eventos

Prof. Vicente Paulo de Camargo

Page 2: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

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

Page 3: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

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

Page 4: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosCrie o projeto JavaFX com o nome SceneBuilderExemplo.

Com o projeto SceneBuilderExemplo aberto no Eclipse, crie os pacotes controle e view em src.

Crie a classe ViewControle.java no pacote controle

Crie o arquivo ViewFXML.fxml no pacote view

Na janela New digite

fxml e selecione

New FXML

Document e

selecione Next

Na próxima

janela

informe

ViewFXML

em Name e

Finish

O arquivo FXML ficará

salvo no pacote view

1

2

3

Page 5: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosAbra o arquivo ViewFXML.fxml pelo Scene Builder

A janela do SceneBuilder é apresentada com o arquivo ViewFXML.fxml

Page 6: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Crie agora uma interface gráfica com o container Pane, localizado na aba

Containers

Insira um controle TextField e três controles Button

Esses controles se encontram na aba Controls do SceneBuilder

Observe a interface criada na figura a seguir:

Controle

TextField

Controles

Button

Observe o passo-a-passo para criar essa interface gráfica

Page 7: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 8: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 9: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 10: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 11: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 12: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 13: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 14: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 15: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 16: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 17: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 18: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 19: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 20: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 21: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 22: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 23: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 24: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 25: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 26: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 27: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 28: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 29: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 30: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 31: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 32: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 33: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosUsando Scene Builder passo a passo

Inserindo controles e conhecendo suas propriedades e eventos

Page 34: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Com o projeto SceneBuilderExemplo aberto no Eclipse,

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

Isso faz com que

a aplicação

relacione o

arquivo fxml com

a classe de

controle

correspondente

Page 35: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Referência

da classe de

controle

Código sem a

classe de

controle

Código com a

classe de

controle

Note os erros no fxml. Eles ocorrem porque a classe controle

não possui a referência dos elementos e dos seus respectivos

eventos

Page 36: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosPara eliminar os erros no fxml:

Com o Scene Builder ainda aberto com o arquivo ViewFXML.fxml

Acesse a opção O View / Show Sample Controller Skeleton

Será apresentada a janela Sample Skeleton For ViewFXML.fxml Controller Class

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

12

2

Page 37: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Ajuste os erros clicando no x de um dos

erros e importe a biblioteca informada

ActionEvent(javafx.event)

O respectivo import pode também ser

efetuado com a combinação ctrl+shift+o

Page 38: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Agora, tanto a classe de controle

quanto o arquivo fxml, não

possuem erros

Note os métodos correspondentes

aos eventos de cada botão. Assim,

por exemplo, se o botão

btnIncluir receber um clique do

mouse, o evento

btnIncluirOnAction será

chamado

Page 39: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Em seguida, ajuste o código do

Método btnIncluirOnAction

Observe as alterações

Page 40: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

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

Page 41: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Observe a caixa de dialogo Alert em tempo de execução.

title

headerText

Texto da mensagem

Page 42: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

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

Código atual

Novo código

Page 43: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e Eventos

Aplicação em tempo de execução

Após clique do mouse sobre o botão Incluir

Page 44: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosOutras 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

}

});

Page 45: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

Classe de Controle e EventosOutras 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);

Page 46: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

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”);

}

}

});

Page 47: JavaFX Classe de Controle e Eventos · Classe de Controle e Eventos Crie o projeto JavaFX com o nome SceneBuilderExemplo. Com o projeto SceneBuilderExemplo aberto no Eclipse, crie

F I M