SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
JavaFX Script
              Introdução


Fábio Nogueira de Lucena
Instituto de Informática (UFG)
Graduação em Engenharia de Software
http://engenhariadesoftware.inf.br
JavaFX é uma
família de produtos
“Habilidade para criar conteúdo interativo,
aplicações e serviços a serem executados do
computador de mesa aos dispositivos da sala
                  de estar”




“Experiências de internet ricas para todas as
             telas da sua vida”
Fonte de informações




javafx.com
Fonte de informações




java.sun.com/javafx
Componentes

• API
• JavaFX Script (linguagem de programação)
• JavaFX SDK
       Onde obtê-los: javafx.com
Alguns links

• http://javafx.com
• http://java.sun.com/javafx
• http://www.javapassion.com/javafx/
• Esta e outras apresentações (slides):
  http://www.slideshare.net/kyrios
Importante

• Tudo o que existe em Java pode ser
    reutilizado em JavaFX

•   Você poderá reutilizar suas
    classes Java!
Sentenças em JavaFX:
Antes de um Exemplo
Comentários

• Comentário (múltiplas linhas)
  /* Comentário que se estende
     por mais de uma linha.
  */
• Comentário (uma única linha)
  // Até o final da linha
Object literal
• Em Java
  Rectangle r = new Rectangle();
  r.width = 10;
  r.height = 5;

• Em JavaFX
  Rectangle {
    width : 10
    height: 5
  }
Packages e imports

• Package
  package br.ufg.inf.projetoX;
• Import
  import javafx.stage.Stage;
  import javafx.scene.*;
Primeiro exemplo
package jfx1;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.*;

/*   Main.fx
*/

Stage {
    title: "Título da Aplicação (janela)"
    width: 250
    height: 80
    scene: Scene {
        content: Text {
            font : Font { size : 16 }
            x: 10, y: 30
            content: "Meu primeiro teste"
        }
    }
}
Como obtê-lo?

• Repositório dos exemplos
  http://exemplos.googlecode.com/svn/trunk/javafx

• Comando para obter localmente?
  (cria diretório jfx1 a partir do repositório)
  svn export <url-acima>/jfx1 jfx1
Como compilar e
      executar?
• Vá jfx1 o diretório criado
  cd
      para


• Compilação
  javafxc -d    ~/tmp src/jfx1/Main.fx

• Execução-cp
  javafx        ~/tmp jfx1.Main
Se o resultado for...

• Especifique o encoding pertinente ao arquivo fonte
  (no momento da compilação)
  javafxc -d ~/tmp -encoding ISO-8859-1 src/jfx1/Main.fx


• Ao executar o~/tmp jfx1.Main
  javafx -cp
                resultado da compilação anterior


• O resultado...
Primeiro a linguagem,
   depois os recursos da API
Variáveis e tipos
      (explícitos)
var boolean: Boolean = true;
var byte: Byte = 2;
var short: Short = 3;
var int:Integer = 4;
var long: Long = 5;
var float: Float = 1.2;
var double: Double = 2.0;
Tipos (implícitos)
// var boolean : Boolean = true;
// é o mesmo que...
var boolean = true;


// var int : Integer = 4;
// é o mesmo que ...
var int = 4;
Todos os tipos
Boolean
Integer
Number
String
Duration     Number é sinônimo de Float
Character
Byte        Float é equivalente a Number
Short
Long         Float é sinônimo de Number
Float
Double      Number é equivalente a Float
Exemplo Boolean

   // Pacote: javafx.lang
   // Classe FX (vários métodos static)
   var logica : Boolean = false;
   FX.println(“Valor: {not logica}”);


   // OU
   println(“Valor: {not logica}”);
Notou que não houve concatenação explícita?
Constantes
                           var (variável)
                          def (constante)
// Variável
var logica : Boolean = false;


// CONSTANTE
def pi = 3.1415926536;
println(“Valor: {pi}”);
Área de um círculo
                              var (variável)
                             def (constante)

// Arquivo: x.fx
// Área pi * raio * raio
def pi = 3.1415926536;
def raio = 2; // Dois metros
println(“Área: {pi*raio*raio}m2”);

Este código é compilável e executável!
$ javafxc x.fx
$ javafx x
Volume de um cilindro
                  // Área pi * raio * raio
                  def pi = 3.1415926536;
                  def raio = 2; // Dois metros
                  var area = pi * raio * raio;
                  var altura = 1; // 1 metro
                  var volume = area * altura * 1000;
def (constante)
 var (variável)




                  println(“Volume: {volume} litros”);

                  Este código é compilável e executável!
                  $ javafxc x.fx
                  $ javafx x
String (“ ou ‘)
                        def name : String = “Nome”;
“string” ou ‘s tring’



                        var nAme = ‘Nome’;
                        var iguais = ‘{name == nAme}’;
                        // Imprime
                        // Iguais?: true
                        print(“Iguais?: {iguais}”);


                        Este código é compilável e executável!
                        $ javafxc x.fx
                        $ javafx x
String (múltiplas linhas)
                                                   “s t
                        var name = “Pedro ”             r   i ng
                            ‘Álvares’                           ”o
                                                                     u ‘s
“string” ou ‘s tring’




                                   “ Cabral”;                               tri
                                                                                  ng
                                                                                    ’
                        // Imprime
                        // Pedro Álvares Cabral
                        print(name);

                         Este código é compilável e executável!
                         $ javafxc x.fx
                         $ javafx x
Duration
  Detalhes em javafx.lang.Duration
var horas = 0h;
var minutos = 1m;
var segundos = 1s;
var milissegundos = 1ms;
var parcial = horas + milissegundos;
print(parcial + minutos + segundos);

Este código é compilável e executável!
Sequência é uma coleção
   de objetos ordenados
• É declarada com colchetes ([ e ])
• Uma sequência é linear, não existem
  sequências multidimensionais
• Sequências são iguais se possuírem o
  mesmo tamanho e os mesmos valores nas
  mesmas ordens
• Notação: tipo seguido de []
  (por exemplo, Integer[])
• sizeof recupera o tamanho da
  sequência
Sequências
Sequence é uma lista ordenada
de elementos de um mesmo tipo
     var lista = [-1, 0, 1];
     def ordenada = [ false, true, true ];
     var mesmoTipo = [ ‘A’, “ Janela” ];
     println(lista);
     println(ordenada);
     println(mesmoTipo);


     Nenhuma surpresa:
Sequências
Sequence é uma lista ordenada
 de elementos de um mesmo tipo
    var ints : Integer[] = [1, 2,3];
    def bs : Boolean[]=[false];
    def vazia=[];
    println(ints);println(bs);println(vazia);

     Nada espetacular...
Sequências
Sequence é uma lista ordenada
 de elementos de um mesmo tipo
    // Vírgula como separador
    var strs = [ “ok”, ‘correto’ ];
    println(strs);


    Aplicação de 3 linhas:
Nem sempre...

sequências são explicitamente
criadas por meio de seus
elementos separados por
vírgulas, nestes casos, ...
Faixas (sequências numéricas)
             Step padrão é
1 ou 1.0 dependendo do tipo do elemento
var ints = [1..5]; // step é 1
println(ints);
var ns = [ 1.0..1.3 step 0.1];
println(ns);

 Arquivo n.fx é compilado
 n (do nome do arquivo) é executada
Faixas (sequências numéricas)

             Step padrão é
1 ou 1.0 dependendo do tipo do elemento
println([1..<5]);           //   1 a 4
println([4..1 step -1]);    //   4 a 1
println([10..1]);           //   [ ]
println(sizeof [1..67]);    //   67
Sequências não podem conter sequências

  Uma sequência contém apenas objetos
    Uma sequência não é um objeto!
 var inicio = 1;
 var fim = 9;
 var p = 2;
 var impares = [inicio..fim step p];
 var pares = [(inicio+1)..(fim+1) step p];
 var todos = [ impares, pares ];
 println(todos);

 Elementos são concatenados:
Sequências não podem conter sequências

  Uma sequência contém apenas objetos
    Uma sequência não é um objeto!

 import javafx.util.Sequences;
 var impares = [1..9 step 2];
 var pares = [2..10 step 2];
 println(Sequences.sort([impares,pares]));


 Elementos são concatenados e ordenados:
Convertendo para String
   Sequence é uma lista ordenada
   de elementos de um mesmo tipo
var bytes : Byte[] = [2..1 step -1];
println(bytes);
println(“{bytes}”);
println(“{[5..0 step -1]}”);


Saídas produzidas
O que você já sabe?
Sequence é uma lista ordenada
de elementos de um mesmo tipo

                     javafxc compila arquivo .fx
                     javafx executa

A linha abaixo é compilável e executável!

  println(new java.util.Date());
Leia mentalmente...
• Obter o tamanho de uma sequence
• Recuperar um único elemento
• Recuperar uma faixa de elementos
  consecutivos
• Recuperar subconjunto de elementos
  não consecutivos que satisfazem
  critérios de busca
• Inverter a ordem
• Inserir/remover um elemento
Tamanho (sizeof)
     sizeof também pode ser empregado
      para tipos primitivos (retorna 1)
  var ints = [ 2..10000 ];
  println(sizeof ints);    // 9999

    sizeof usado também com referência
  (retorna 1 se não for null ou 0 para null)
var integer : Integer;
var ref : javafx.scene.shape.Rectangle;
println(sizeof integer); // 1
println(sizeof ref);     // 0
Acesso a elemento
nome de sequence ou expressão que resulta em
         sequence seguido de [indice]
  var ints = [ 2..10000 ];
  ints[3] = 2;

  println(ints[-14]); // Imprime 0
  println([1, 3][1]); // Imprime 3
  println(ints[4]);   // Imprime 6
  // Imprime true
  println(ints[2*10000] == ints[-1]);

 [indice]
Acesso a segmento
nome de sequence ou expressão que resulta em
            sequence seguido de:

  print([1..5][0..]);     //   todos
  print([1..5][0..<1]);   //   [ 1 ]
  print([1..5][0..0]);    //   [ 1 ]
  print([1..5][2..<]);    //   [ 3, 4 ]
  print([1..5][3..4]);    //   [ 4, 5 ]



 [índice]
Segmento por predicado
  Elementos não necessariamente consecutivos
   são selecionados, basta satisfazer condição
  var ns = [1..5];
  print(ns[x | x < 6]);    // todos
  print(ns[y | y == 4]);   // [ 4 ]
  print(ns[z | z*z == 4]); // [ 2 ]
  print(ns[varX | true]); // todos
  // Imprime [ 1, 3, 5 ] (índices pares)
  print(ns[k | indexof k mod 2 == 0]);
  print(ns[par | par mod 2 == 0]); // Pares

[valores da sequência]
Invertendo ordem
  Não modifica a sequência original, produz
  outra que contém os mesmos elementos,
          mas na ordem inversa


var ns = [1..5];
var sn = [5..1 step -1];
print(reverse ns);       // [ 5, 4, ...
print(reverse ns == sn); // true

 reverse ns
 Uma outra sequência é criada
Inserindo elemento
 Modifica a sequência original

    insert into
  insert before
   insert after
insert into
        Modifica a sequência original
  Insere um valor no final de uma sequência



var ns = [1..3];
insert 10 into ns;
print(ns); // [ 1, 2, 3, 10 ]


insert x into sequencia;
Valor x é inserido no final de sequencia
insert before
        Modifica a sequência original
         Insere valor em sequência
         antes do índice fornecido
var ns = [1..3]; // [ 1, 2, 3 ]
insert -1 before ns [2];
print(ns); // [ 1, 2, -1, 3 ]

insert -1 before ns[0];
print(ns); // [ -1, 1, 2, -1, 3 ]

insert x before sequencia [indice];
Valor x é inserido em sequencia antes
de indice
insert after
        Modifica a sequência original
         Insere valor em sequência
           após o índice fornecido
var ns = [1..3];
insert -1 after ns [2];
print(ns); // [ 1, 2, 3, -1 ]

insert -1 after ns[-1];
print(ns); // [ -1, 1, 2, 3, -1 ]

insert x after sequencia [indice];
Valor x é inserido em sequencia após
indice
Inserir sequência em sequência
       Modifica a sequência original
  insert into, insert before e insert after
var   pares1 = [1..5][x | x mod 2 == 0];
var   pares2 = pares1;
var   pares3 = pares1;
var   impares = [1..3][x | x mod 2 != 0];

// [ 2, 4, 1, 3 ]
insert impares into pares1;

// [ 1, 3, 2, 4 ]
insert impares before pares2 [0];

// [ 2, 1, 3, 4 ]
insert impares after pares3 [0];
Removendo elementos
       Modifica a sequência original
       delete valor from sequência
         delete sequência [índice]
var ints = [1..10];
delete 1 from ints;   //   [   2,3,4,5,6,7,8,9,10 ]
delete 3 from ints;   //   [   2,4,5,6,7,8,9,10 ]
delete ints [2];      //   [   2,4,6,7,8,9,10 ]
delete ints [3];      //   [   2,4,6,8,9,10 ]
delete ints [4..4];   //   [   2,4,6,8,10 ]
delete ints [5];      //   [   2,4,6,8,10 ]
println(ints);


delete x from sequencia
delete sequencia [índice]
Sequence comprehension
     Criando sequências com uso do for

var ints = for (x in [1..2]) x*x;
println(ints); // [ 1, 4 ]
var ns = for (x in [1..2] where x > 1) x;
println(ns); // [ 2 ]

def AA = [ 1, 2 ];
def BB = [ 3, 4 ];
var matriz = for (a in AA, b in BB) a*10 + b;
println(matriz); // [ 13, 14, 23, 24 ]
Última sentença do for
            (define o valor)
     Criando sequências com uso do for
var ints = for (x in [1..2]) {
    println(x);
    x*x;
};
println(ints);




                Resultado:
Funções úteis
           javafx.util.Sequences

binarySearch
indexByIdentity
indexOf
isEqualByContentIdentity
max
min
nextIndexByIdentity
nextIndexf
reverse
shuffle
sort
Ordenando
      javafx.util.Sequences.sort(seq)

import javafx.util.Sequences;

var strs = [ “teste”, “cadeira”, “casa” ];
var ord = Sequences.sort(strs);
println(ord);
                [ “cadeira”, “casa”, “teste” ]
var ints = [10..1 step -1];
def intsOrdered = Sequences.sort(ints);
println(intsOrdered);

                  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Expressões
       Trecho de código em JavaFX Script
    que o compilador é capaz de compreender


println([1..10]);


{
     println([1..10]);
}

       Expressões equivalentes do tipo void
Expressões
       Trecho de código em JavaFX Script
    que o compilador é capaz de compreender


10;


{
     10;
}

      Expressões equivalentes do tipo Integer
Atribuições
    Trecho de código em JavaFX Script
 que o compilador é capaz de compreender
var x = 10;
var y = {
   10;
}
var z = {
   def a = 5;
   def b = 2;
   a * b;
}
           Atribuições envolvendo
   expressões equivalentes do tipo Integer
Atribuições
    Trecho de código em JavaFX Script
 que o compilador é capaz de compreender

var x = 10;


var y = {
   println(x);
   x + 10;       // ; é opcional aqui
}
println(y);

           Atribuições envolvendo
          expressões do tipo Integer
While
         Executar bloco de código
     enquanto condição for verdadeira



var x = 1;
while (x < 10) {
    print(“ {x}”);
    x++;
}
              Resultado:
            123456789
For
           Executar bloco de código
       enquanto condição for verdadeira
 var y = for (x in [1..10]) {
     print(“ {x}”);
     “a{x*x}”
 }
 println(“ “);
 println(y);

                     Resultado:
               1 2 3 4 5 6 7 8 9 10
[ a1, a4, a9, a16, a25, a36, a49, a64, a91, a100 ]
if
         Executar bloco de código
      conforme avaliação de condição



var x = 1;
println(“{if (x>0) then x+3 else x-10}”);



                Resultado:
                    4
if
         Executar bloco de código
    dependendo de avaliação de condição



var x = 1;
var y = if (x < 0) then “a” else “b”;
println(“Resultado: {y}”);


            O que é produzido?
               Resultado: b
O que ainda falta?

• object literal
• binding
• gráficos
• API              Não perca...

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Linguagem C - Strings
Linguagem C - StringsLinguagem C - Strings
Linguagem C - Strings
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
JavaScript for Beginners
JavaScript for BeginnersJavaScript for Beginners
JavaScript for Beginners
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de strings
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NET
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Ling c
Ling cLing c
Ling c
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
 
Fundamentos de C#
Fundamentos de C#Fundamentos de C#
Fundamentos de C#
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 

Destacado

Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafxalfredofurtado
 
Internet das Coisas com Java e Things API
Internet das Coisas com Java e Things APIInternet das Coisas com Java e Things API
Internet das Coisas com Java e Things APIGlobalcode
 
Enterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaEnterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaGlobalcode
 
Campus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reaisCampus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reaisGlobalcode
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Práticodanielfc
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXjesuinoPower
 
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!Globalcode
 
Palestra sobre Carreira Java / JavaEE - TDC2012 - Trlha Java
Palestra sobre Carreira Java / JavaEE - TDC2012 - Trlha JavaPalestra sobre Carreira Java / JavaEE - TDC2012 - Trlha Java
Palestra sobre Carreira Java / JavaEE - TDC2012 - Trlha JavaGlobalcode
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutosBruno Oliveira
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasjesuinoPower
 
JavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio LopesJavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio LopesCaelum
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06thomasdacosta
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04thomasdacosta
 

Destacado (20)

Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafx
 
Internet das Coisas com Java e Things API
Internet das Coisas com Java e Things APIInternet das Coisas com Java e Things API
Internet das Coisas com Java e Things API
 
Java persintence api
Java persintence apiJava persintence api
Java persintence api
 
Enterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaEnterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na prática
 
Campus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reaisCampus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reais
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Ria e Java FX
Ria e Java FXRia e Java FX
Ria e Java FX
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Prático
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
 
Palestra sobre Carreira Java / JavaEE - TDC2012 - Trlha Java
Palestra sobre Carreira Java / JavaEE - TDC2012 - Trlha JavaPalestra sobre Carreira Java / JavaEE - TDC2012 - Trlha Java
Palestra sobre Carreira Java / JavaEE - TDC2012 - Trlha Java
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutos
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e Lambdas
 
JavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio LopesJavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio Lopes
 
JavaFX Mobile
JavaFX MobileJavaFX Mobile
JavaFX Mobile
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
Mini-curso JavaFX Aula1
Mini-curso JavaFX Aula1Mini-curso JavaFX Aula1
Mini-curso JavaFX Aula1
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 

Similar a Javafx Introdução

Poo1 aula 6 - conversão de tipos primitivos
Poo1   aula 6 - conversão de tipos primitivosPoo1   aula 6 - conversão de tipos primitivos
Poo1 aula 6 - conversão de tipos primitivosDenis Sobrenome
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell scriptbrunobione
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IVGabriel Faustino
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalJosé Araújo
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Introdução a linguagem Swift
Introdução a linguagem SwiftIntrodução a linguagem Swift
Introdução a linguagem SwiftGabriel Rodrigues
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funçõesCarla Lee
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rustBruno Rocha
 

Similar a Javafx Introdução (20)

Php
PhpPhp
Php
 
Poo1 aula 6 - conversão de tipos primitivos
Poo1   aula 6 - conversão de tipos primitivosPoo1   aula 6 - conversão de tipos primitivos
Poo1 aula 6 - conversão de tipos primitivos
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
JAVA - Introdução
JAVA - IntroduçãoJAVA - Introdução
JAVA - Introdução
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem Pascal
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Introdução a linguagem Swift
Introdução a linguagem SwiftIntrodução a linguagem Swift
Introdução a linguagem Swift
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Aula4
Aula4Aula4
Aula4
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funções
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Minicurso php
Minicurso phpMinicurso php
Minicurso php
 

Más de Fábio Nogueira de Lucena

Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Fábio Nogueira de Lucena
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoFábio Nogueira de Lucena
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Fábio Nogueira de Lucena
 

Más de Fábio Nogueira de Lucena (20)

CSS
CSSCSS
CSS
 
Fundamentos de Programação Front-End
Fundamentos de Programação Front-EndFundamentos de Programação Front-End
Fundamentos de Programação Front-End
 
JavaScript: Aprendendo a programar
JavaScript: Aprendendo a programarJavaScript: Aprendendo a programar
JavaScript: Aprendendo a programar
 
HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)
 
HTTP: Um Curso Básico
HTTP: Um Curso BásicoHTTP: Um Curso Básico
HTTP: Um Curso Básico
 
Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08
 
Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017
 
Arquétipos
ArquétiposArquétipos
Arquétipos
 
Introducao integracao
Introducao integracaoIntroducao integracao
Introducao integracao
 
Healthdb Visão Geral
Healthdb Visão GeralHealthdb Visão Geral
Healthdb Visão Geral
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógico
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
Prontuário Eletrônico do Paciente
Prontuário Eletrônico do PacienteProntuário Eletrônico do Paciente
Prontuário Eletrônico do Paciente
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
 
Introducao
IntroducaoIntroducao
Introducao
 
Uml
UmlUml
Uml
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Orientação a Objetos (3)
Orientação a Objetos (3)Orientação a Objetos (3)
Orientação a Objetos (3)
 

Javafx Introdução

  • 1. JavaFX Script Introdução Fábio Nogueira de Lucena Instituto de Informática (UFG) Graduação em Engenharia de Software http://engenhariadesoftware.inf.br
  • 3. “Habilidade para criar conteúdo interativo, aplicações e serviços a serem executados do computador de mesa aos dispositivos da sala de estar” “Experiências de internet ricas para todas as telas da sua vida”
  • 6. Componentes • API • JavaFX Script (linguagem de programação) • JavaFX SDK Onde obtê-los: javafx.com
  • 7. Alguns links • http://javafx.com • http://java.sun.com/javafx • http://www.javapassion.com/javafx/ • Esta e outras apresentações (slides): http://www.slideshare.net/kyrios
  • 8. Importante • Tudo o que existe em Java pode ser reutilizado em JavaFX • Você poderá reutilizar suas classes Java!
  • 10. Comentários • Comentário (múltiplas linhas) /* Comentário que se estende por mais de uma linha. */ • Comentário (uma única linha) // Até o final da linha
  • 11. Object literal • Em Java Rectangle r = new Rectangle(); r.width = 10; r.height = 5; • Em JavaFX Rectangle { width : 10 height: 5 }
  • 12. Packages e imports • Package package br.ufg.inf.projetoX; • Import import javafx.stage.Stage; import javafx.scene.*;
  • 13. Primeiro exemplo package jfx1; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.text.*; /* Main.fx */ Stage { title: "Título da Aplicação (janela)" width: 250 height: 80 scene: Scene { content: Text { font : Font { size : 16 } x: 10, y: 30 content: "Meu primeiro teste" } } }
  • 14. Como obtê-lo? • Repositório dos exemplos http://exemplos.googlecode.com/svn/trunk/javafx • Comando para obter localmente? (cria diretório jfx1 a partir do repositório) svn export <url-acima>/jfx1 jfx1
  • 15. Como compilar e executar? • Vá jfx1 o diretório criado cd para • Compilação javafxc -d ~/tmp src/jfx1/Main.fx • Execução-cp javafx ~/tmp jfx1.Main
  • 16. Se o resultado for... • Especifique o encoding pertinente ao arquivo fonte (no momento da compilação) javafxc -d ~/tmp -encoding ISO-8859-1 src/jfx1/Main.fx • Ao executar o~/tmp jfx1.Main javafx -cp resultado da compilação anterior • O resultado...
  • 17. Primeiro a linguagem, depois os recursos da API
  • 18. Variáveis e tipos (explícitos) var boolean: Boolean = true; var byte: Byte = 2; var short: Short = 3; var int:Integer = 4; var long: Long = 5; var float: Float = 1.2; var double: Double = 2.0;
  • 19. Tipos (implícitos) // var boolean : Boolean = true; // é o mesmo que... var boolean = true; // var int : Integer = 4; // é o mesmo que ... var int = 4;
  • 20. Todos os tipos Boolean Integer Number String Duration Number é sinônimo de Float Character Byte Float é equivalente a Number Short Long Float é sinônimo de Number Float Double Number é equivalente a Float
  • 21. Exemplo Boolean // Pacote: javafx.lang // Classe FX (vários métodos static) var logica : Boolean = false; FX.println(“Valor: {not logica}”); // OU println(“Valor: {not logica}”); Notou que não houve concatenação explícita?
  • 22. Constantes var (variável) def (constante) // Variável var logica : Boolean = false; // CONSTANTE def pi = 3.1415926536; println(“Valor: {pi}”);
  • 23. Área de um círculo var (variável) def (constante) // Arquivo: x.fx // Área pi * raio * raio def pi = 3.1415926536; def raio = 2; // Dois metros println(“Área: {pi*raio*raio}m2”); Este código é compilável e executável! $ javafxc x.fx $ javafx x
  • 24. Volume de um cilindro // Área pi * raio * raio def pi = 3.1415926536; def raio = 2; // Dois metros var area = pi * raio * raio; var altura = 1; // 1 metro var volume = area * altura * 1000; def (constante) var (variável) println(“Volume: {volume} litros”); Este código é compilável e executável! $ javafxc x.fx $ javafx x
  • 25. String (“ ou ‘) def name : String = “Nome”; “string” ou ‘s tring’ var nAme = ‘Nome’; var iguais = ‘{name == nAme}’; // Imprime // Iguais?: true print(“Iguais?: {iguais}”); Este código é compilável e executável! $ javafxc x.fx $ javafx x
  • 26. String (múltiplas linhas) “s t var name = “Pedro ” r i ng ‘Álvares’ ”o u ‘s “string” ou ‘s tring’ “ Cabral”; tri ng ’ // Imprime // Pedro Álvares Cabral print(name); Este código é compilável e executável! $ javafxc x.fx $ javafx x
  • 27. Duration Detalhes em javafx.lang.Duration var horas = 0h; var minutos = 1m; var segundos = 1s; var milissegundos = 1ms; var parcial = horas + milissegundos; print(parcial + minutos + segundos); Este código é compilável e executável!
  • 28. Sequência é uma coleção de objetos ordenados • É declarada com colchetes ([ e ]) • Uma sequência é linear, não existem sequências multidimensionais • Sequências são iguais se possuírem o mesmo tamanho e os mesmos valores nas mesmas ordens • Notação: tipo seguido de [] (por exemplo, Integer[]) • sizeof recupera o tamanho da sequência
  • 29. Sequências Sequence é uma lista ordenada de elementos de um mesmo tipo var lista = [-1, 0, 1]; def ordenada = [ false, true, true ]; var mesmoTipo = [ ‘A’, “ Janela” ]; println(lista); println(ordenada); println(mesmoTipo); Nenhuma surpresa:
  • 30. Sequências Sequence é uma lista ordenada de elementos de um mesmo tipo var ints : Integer[] = [1, 2,3]; def bs : Boolean[]=[false]; def vazia=[]; println(ints);println(bs);println(vazia); Nada espetacular...
  • 31. Sequências Sequence é uma lista ordenada de elementos de um mesmo tipo // Vírgula como separador var strs = [ “ok”, ‘correto’ ]; println(strs); Aplicação de 3 linhas:
  • 32. Nem sempre... sequências são explicitamente criadas por meio de seus elementos separados por vírgulas, nestes casos, ...
  • 33. Faixas (sequências numéricas) Step padrão é 1 ou 1.0 dependendo do tipo do elemento var ints = [1..5]; // step é 1 println(ints); var ns = [ 1.0..1.3 step 0.1]; println(ns); Arquivo n.fx é compilado n (do nome do arquivo) é executada
  • 34. Faixas (sequências numéricas) Step padrão é 1 ou 1.0 dependendo do tipo do elemento println([1..<5]); // 1 a 4 println([4..1 step -1]); // 4 a 1 println([10..1]); // [ ] println(sizeof [1..67]); // 67
  • 35. Sequências não podem conter sequências Uma sequência contém apenas objetos Uma sequência não é um objeto! var inicio = 1; var fim = 9; var p = 2; var impares = [inicio..fim step p]; var pares = [(inicio+1)..(fim+1) step p]; var todos = [ impares, pares ]; println(todos); Elementos são concatenados:
  • 36. Sequências não podem conter sequências Uma sequência contém apenas objetos Uma sequência não é um objeto! import javafx.util.Sequences; var impares = [1..9 step 2]; var pares = [2..10 step 2]; println(Sequences.sort([impares,pares])); Elementos são concatenados e ordenados:
  • 37. Convertendo para String Sequence é uma lista ordenada de elementos de um mesmo tipo var bytes : Byte[] = [2..1 step -1]; println(bytes); println(“{bytes}”); println(“{[5..0 step -1]}”); Saídas produzidas
  • 38. O que você já sabe? Sequence é uma lista ordenada de elementos de um mesmo tipo javafxc compila arquivo .fx javafx executa A linha abaixo é compilável e executável! println(new java.util.Date());
  • 39. Leia mentalmente... • Obter o tamanho de uma sequence • Recuperar um único elemento • Recuperar uma faixa de elementos consecutivos • Recuperar subconjunto de elementos não consecutivos que satisfazem critérios de busca • Inverter a ordem • Inserir/remover um elemento
  • 40. Tamanho (sizeof) sizeof também pode ser empregado para tipos primitivos (retorna 1) var ints = [ 2..10000 ]; println(sizeof ints); // 9999 sizeof usado também com referência (retorna 1 se não for null ou 0 para null) var integer : Integer; var ref : javafx.scene.shape.Rectangle; println(sizeof integer); // 1 println(sizeof ref); // 0
  • 41. Acesso a elemento nome de sequence ou expressão que resulta em sequence seguido de [indice] var ints = [ 2..10000 ]; ints[3] = 2; println(ints[-14]); // Imprime 0 println([1, 3][1]); // Imprime 3 println(ints[4]); // Imprime 6 // Imprime true println(ints[2*10000] == ints[-1]); [indice]
  • 42. Acesso a segmento nome de sequence ou expressão que resulta em sequence seguido de: print([1..5][0..]); // todos print([1..5][0..<1]); // [ 1 ] print([1..5][0..0]); // [ 1 ] print([1..5][2..<]); // [ 3, 4 ] print([1..5][3..4]); // [ 4, 5 ] [índice]
  • 43. Segmento por predicado Elementos não necessariamente consecutivos são selecionados, basta satisfazer condição var ns = [1..5]; print(ns[x | x < 6]); // todos print(ns[y | y == 4]); // [ 4 ] print(ns[z | z*z == 4]); // [ 2 ] print(ns[varX | true]); // todos // Imprime [ 1, 3, 5 ] (índices pares) print(ns[k | indexof k mod 2 == 0]); print(ns[par | par mod 2 == 0]); // Pares [valores da sequência]
  • 44. Invertendo ordem Não modifica a sequência original, produz outra que contém os mesmos elementos, mas na ordem inversa var ns = [1..5]; var sn = [5..1 step -1]; print(reverse ns); // [ 5, 4, ... print(reverse ns == sn); // true reverse ns Uma outra sequência é criada
  • 45. Inserindo elemento Modifica a sequência original insert into insert before insert after
  • 46. insert into Modifica a sequência original Insere um valor no final de uma sequência var ns = [1..3]; insert 10 into ns; print(ns); // [ 1, 2, 3, 10 ] insert x into sequencia; Valor x é inserido no final de sequencia
  • 47. insert before Modifica a sequência original Insere valor em sequência antes do índice fornecido var ns = [1..3]; // [ 1, 2, 3 ] insert -1 before ns [2]; print(ns); // [ 1, 2, -1, 3 ] insert -1 before ns[0]; print(ns); // [ -1, 1, 2, -1, 3 ] insert x before sequencia [indice]; Valor x é inserido em sequencia antes de indice
  • 48. insert after Modifica a sequência original Insere valor em sequência após o índice fornecido var ns = [1..3]; insert -1 after ns [2]; print(ns); // [ 1, 2, 3, -1 ] insert -1 after ns[-1]; print(ns); // [ -1, 1, 2, 3, -1 ] insert x after sequencia [indice]; Valor x é inserido em sequencia após indice
  • 49. Inserir sequência em sequência Modifica a sequência original insert into, insert before e insert after var pares1 = [1..5][x | x mod 2 == 0]; var pares2 = pares1; var pares3 = pares1; var impares = [1..3][x | x mod 2 != 0]; // [ 2, 4, 1, 3 ] insert impares into pares1; // [ 1, 3, 2, 4 ] insert impares before pares2 [0]; // [ 2, 1, 3, 4 ] insert impares after pares3 [0];
  • 50. Removendo elementos Modifica a sequência original delete valor from sequência delete sequência [índice] var ints = [1..10]; delete 1 from ints; // [ 2,3,4,5,6,7,8,9,10 ] delete 3 from ints; // [ 2,4,5,6,7,8,9,10 ] delete ints [2]; // [ 2,4,6,7,8,9,10 ] delete ints [3]; // [ 2,4,6,8,9,10 ] delete ints [4..4]; // [ 2,4,6,8,10 ] delete ints [5]; // [ 2,4,6,8,10 ] println(ints); delete x from sequencia delete sequencia [índice]
  • 51. Sequence comprehension Criando sequências com uso do for var ints = for (x in [1..2]) x*x; println(ints); // [ 1, 4 ] var ns = for (x in [1..2] where x > 1) x; println(ns); // [ 2 ] def AA = [ 1, 2 ]; def BB = [ 3, 4 ]; var matriz = for (a in AA, b in BB) a*10 + b; println(matriz); // [ 13, 14, 23, 24 ]
  • 52. Última sentença do for (define o valor) Criando sequências com uso do for var ints = for (x in [1..2]) { println(x); x*x; }; println(ints); Resultado:
  • 53. Funções úteis javafx.util.Sequences binarySearch indexByIdentity indexOf isEqualByContentIdentity max min nextIndexByIdentity nextIndexf reverse shuffle sort
  • 54. Ordenando javafx.util.Sequences.sort(seq) import javafx.util.Sequences; var strs = [ “teste”, “cadeira”, “casa” ]; var ord = Sequences.sort(strs); println(ord); [ “cadeira”, “casa”, “teste” ] var ints = [10..1 step -1]; def intsOrdered = Sequences.sort(ints); println(intsOrdered); [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
  • 55. Expressões Trecho de código em JavaFX Script que o compilador é capaz de compreender println([1..10]); { println([1..10]); } Expressões equivalentes do tipo void
  • 56. Expressões Trecho de código em JavaFX Script que o compilador é capaz de compreender 10; { 10; } Expressões equivalentes do tipo Integer
  • 57. Atribuições Trecho de código em JavaFX Script que o compilador é capaz de compreender var x = 10; var y = { 10; } var z = { def a = 5; def b = 2; a * b; } Atribuições envolvendo expressões equivalentes do tipo Integer
  • 58. Atribuições Trecho de código em JavaFX Script que o compilador é capaz de compreender var x = 10; var y = { println(x); x + 10; // ; é opcional aqui } println(y); Atribuições envolvendo expressões do tipo Integer
  • 59. While Executar bloco de código enquanto condição for verdadeira var x = 1; while (x < 10) { print(“ {x}”); x++; } Resultado: 123456789
  • 60. For Executar bloco de código enquanto condição for verdadeira var y = for (x in [1..10]) { print(“ {x}”); “a{x*x}” } println(“ “); println(y); Resultado: 1 2 3 4 5 6 7 8 9 10 [ a1, a4, a9, a16, a25, a36, a49, a64, a91, a100 ]
  • 61. if Executar bloco de código conforme avaliação de condição var x = 1; println(“{if (x>0) then x+3 else x-10}”); Resultado: 4
  • 62. if Executar bloco de código dependendo de avaliação de condição var x = 1; var y = if (x < 0) then “a” else “b”; println(“Resultado: {y}”); O que é produzido? Resultado: b
  • 63. O que ainda falta? • object literal • binding • gráficos • API Não perca...

Notas del editor