0
JavaFX Script
              Introdução


Fábio Nogueira de Lucena
Instituto de Informática (UFG)
Graduação em Engenharia d...
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 dispositivo...
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 aprese...
Importante

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

•   Você poderá reutilizar suas
    classes Ja...
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 ...
Object literal
• Em Java
  Rectangle r = new Rectangle();
  r.width = 10;
  r.height = 5;

• Em JavaFX
  Rectangle {
    w...
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.*;

/*   Ma...
Como obtê-lo?

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

• Comando para obter localmen...
Como compilar e
      executar?
• Vá jfx1 o diretório criado
  cd
      para


• Compilação
  javafxc -d    ~/tmp src/jfx1...
Se o resultado for...

• Especifique o encoding pertinente ao arquivo fonte
  (no momento da compilação)
  javafxc -d ~/tmp...
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:Intege...
Tipos (implícitos)
// var boolean : Boolean = true;
// é o mesmo que...
var boolean = true;


// var int : Integer = 4;
//...
Todos os tipos
Boolean
Integer
Number
String
Duration     Number é sinônimo de Float
Character
Byte        Float é equival...
Exemplo Boolean

   // Pacote: javafx.lang
   // Classe FX (vários métodos static)
   var logica : Boolean = false;
   FX....
Constantes
                           var (variável)
                          def (constante)
// Variável
var logica : Bo...
Área de um círculo
                              var (variável)
                             def (constante)

// Arquivo: ...
Volume de um cilindro
                  // Área pi * raio * raio
                  def pi = 3.1415926536;
                ...
String (“ ou ‘)
                        def name : String = “Nome”;
“string” ou ‘s tring’



                        var n...
String (múltiplas linhas)
                                                   “s t
                        var name = “Pedr...
Duration
  Detalhes em javafx.lang.Duration
var horas = 0h;
var minutos = 1m;
var segundos = 1s;
var milissegundos = 1ms;
...
Sequência é uma coleção
   de objetos ordenados
• É declarada com colchetes ([ e ])
• Uma sequência é linear, não existem
...
Sequências
Sequence é uma lista ordenada
de elementos de um mesmo tipo
     var lista = [-1, 0, 1];
     def ordenada = [ ...
Sequências
Sequence é uma lista ordenada
 de elementos de um mesmo tipo
    var ints : Integer[] = [1, 2,3];
    def bs : ...
Sequências
Sequence é uma lista ordenada
 de elementos de um mesmo tipo
    // Vírgula como separador
    var strs = [ “ok...
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]; // ste...
Faixas (sequências numéricas)

             Step padrão é
1 ou 1.0 dependendo do tipo do elemento
println([1..<5]);       ...
Sequências não podem conter sequências

  Uma sequência contém apenas objetos
    Uma sequência não é um objeto!
 var inic...
Sequências não podem conter sequências

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

 import ...
Convertendo para String
   Sequence é uma lista ordenada
   de elementos de um mesmo tipo
var bytes : Byte[] = [2..1 step ...
O que você já sabe?
Sequence é uma lista ordenada
de elementos de um mesmo tipo

                     javafxc compila arqu...
Leia mentalmente...
• Obter o tamanho de uma sequence
• Recuperar um único elemento
• Recuperar uma faixa de elementos
  c...
Tamanho (sizeof)
     sizeof também pode ser empregado
      para tipos primitivos (retorna 1)
  var ints = [ 2..10000 ];
...
Acesso a elemento
nome de sequence ou expressão que resulta em
         sequence seguido de [indice]
  var ints = [ 2..100...
Acesso a segmento
nome de sequence ou expressão que resulta em
            sequence seguido de:

  print([1..5][0..]);    ...
Segmento por predicado
  Elementos não necessariamente consecutivos
   são selecionados, basta satisfazer condição
  var n...
Invertendo ordem
  Não modifica a sequência original, produz
  outra que contém os mesmos elementos,
          mas na ordem...
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 ...
insert before
        Modifica a sequência original
         Insere valor em sequência
         antes do índice fornecido
v...
insert after
        Modifica a sequência original
         Insere valor em sequência
           após o índice fornecido
va...
Inserir sequência em sequência
       Modifica a sequência original
  insert into, insert before e insert after
var   pares...
Removendo elementos
       Modifica a sequência original
       delete valor from sequência
         delete sequência [índi...
Sequence comprehension
     Criando sequências com uso do for

var ints = for (x in [1..2]) x*x;
println(ints); // [ 1, 4 ...
Última sentença do for
            (define o valor)
     Criando sequências com uso do for
var ints = for (x in [1..2]) {
 ...
Funções úteis
           javafx.util.Sequences

binarySearch
indexByIdentity
indexOf
isEqualByContentIdentity
max
min
next...
Ordenando
      javafx.util.Sequences.sort(seq)

import javafx.util.Sequences;

var strs = [ “teste”, “cadeira”, “casa” ];...
Expressões
       Trecho de código em JavaFX Script
    que o compilador é capaz de compreender


println([1..10]);


{
  ...
Expressões
       Trecho de código em JavaFX Script
    que o compilador é capaz de compreender


10;


{
     10;
}

    ...
Atribuições
    Trecho de código em JavaFX Script
 que o compilador é capaz de compreender
var x = 10;
var y = {
   10;
}
...
Atribuições
    Trecho de código em JavaFX Script
 que o compilador é capaz de compreender

var x = 10;


var y = {
   pri...
While
         Executar bloco de código
     enquanto condição for verdadeira



var x = 1;
while (x < 10) {
    print(“ {...
For
           Executar bloco de código
       enquanto condição for verdadeira
 var y = for (x in [1..10]) {
     print(“...
if
         Executar bloco de código
      conforme avaliação de condição



var x = 1;
println(“{if (x>0) then x+3 else x...
if
         Executar bloco de código
    dependendo de avaliação de condição



var x = 1;
var y = if (x < 0) then “a” els...
O que ainda falta?

• object literal
• binding
• gráficos
• API              Não perca...
Upcoming SlideShare
Loading in...5
×

Javafx Introdução

2,341

Published on

Introdução à Linguagem JavaFX Script

Published in: Technology, News & Politics
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,341
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
138
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide






























































































































  • Transcript of "Javafx Introdução"

    1. 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
    2. 2. JavaFX é uma família de produtos
    3. 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”
    4. 4. Fonte de informações javafx.com
    5. 5. Fonte de informações java.sun.com/javafx
    6. 6. Componentes • API • JavaFX Script (linguagem de programação) • JavaFX SDK Onde obtê-los: javafx.com
    7. 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. 8. Importante • Tudo o que existe em Java pode ser reutilizado em JavaFX • Você poderá reutilizar suas classes Java!
    9. 9. Sentenças em JavaFX: Antes de um Exemplo
    10. 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. 11. Object literal • Em Java Rectangle r = new Rectangle(); r.width = 10; r.height = 5; • Em JavaFX Rectangle { width : 10 height: 5 }
    12. 12. Packages e imports • Package package br.ufg.inf.projetoX; • Import import javafx.stage.Stage; import javafx.scene.*;
    13. 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. 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. 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. 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. 17. Primeiro a linguagem, depois os recursos da API
    18. 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. 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. 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. 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. 22. Constantes var (variável) def (constante) // Variável var logica : Boolean = false; // CONSTANTE def pi = 3.1415926536; println(“Valor: {pi}”);
    23. 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. 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. 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. 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. 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. 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. 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. 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. 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. 32. Nem sempre... sequências são explicitamente criadas por meio de seus elementos separados por vírgulas, nestes casos, ...
    33. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 45. Inserindo elemento Modifica a sequência original insert into insert before insert after
    46. 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. 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. 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. 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. 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. 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. 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. 53. Funções úteis javafx.util.Sequences binarySearch indexByIdentity indexOf isEqualByContentIdentity max min nextIndexByIdentity nextIndexf reverse shuffle sort
    54. 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. 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. 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. 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. 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. 59. While Executar bloco de código enquanto condição for verdadeira var x = 1; while (x < 10) { print(“ {x}”); x++; } Resultado: 123456789
    60. 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. 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. 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. 63. O que ainda falta? • object literal • binding • gráficos • API Não perca...
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×