SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
JavaFX GUI
      Fábio Nogueira de Lucena
   Instituto de Informática (UFG)
Graduação em Engenharia de Software
  http://engenhariadesoftware.inf.br
Passos para GUI
• Criar um Stage (palco da aplicação)
• Criar uma Scene (sequência de Node)
  com a qual usuários irão interagir
• Criar o conteúdo da Scene (Node[])
• Criar variáveis e classes que representam o
  modelo (model no MVC)
• Criar interação (event handlers)
Primeiro...


• Precisamos conhecer os recursos gráficos...
javafx.scene.control.Button
 Button {
 
 text: "Meu primeiro botão!"
 
 action: function() {}
 }


Documentação de JavaFX (action é um tipo de função)
javafx.scene.control.Button
 Button {
 
 text: "Meu primeiro botão!"
 
 action: function() { FX.exit(); }
 }

             Ao clicar no botão, a aplicação é finalizada!
CheckBox
import javafx.scene.control.CheckBox;

CheckBox {

 text: "Clique para marcar/desmarcar

 selected: true
}

    Inicialmente a opção encontra-se marcada!
Text
import javafx.scene.control.Label;
import javafx.scene.text.Font;
Label {

 text: "Um simples texto!"
   font: Font { size: 30 }
}


 O valor padrão do tamanho da fonte é alterado!
Combinando objetos...

import javafx.scene.control.Label;
import javafx.scene.text.Font;
import javafx.scene.layout.VBox;

VBox {
    content: [
        Label {
            text:   "Um simples texto!"
            font:   Font {size: 30 }
        },
        Label {
            text:   "Outro texto (menor)!"
            font:   Font {size: 20 }
        }]
}
Combinando objetos...
import   javafx.scene.layout.HBox;
import   javafx.scene.shape.Rectangle;
import   javafx.scene.paint.Color;
import   javafx.scene.shape.Circle;

HBox {
    content: [
        Rectangle {
            width: 140, height: 90
            fill: Color.YELLOW
        },
        Circle {
            radius: 40
            fill: Color.GREEN
        }
    ]
}
ImageView
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

var base = "http://engenhariadesoftware.inf.br/publico/";
var arquivo = "logo.png";
var urlRef = bind "{base}{arquivo}";

ImageView {
    image: Image {
        url: urlRef
    }
}
javafx.stage.Stage
javafx.stage.Stage {};




Menor aplicação gráfica em JavaFX!
javafx.stage.Stage
 import javafx.stage.Stage;
 Stage {}


 import javafx.stage.Stage;
 Stage {
     title: "Título da Aplicação (janela)"
     width: 350
     height: 80
     opacity: .6
     resizable: false
 }


Conteúdo é vazio (Scene não foi criada)
Uma imagem no palco
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.image.*;

var jpg = "http://engenhariadesoftware.inf.br/publico/logo.png";
var imagem = ImageView {
  image: Image { url: jpg }
}

Stage {
    title: "Engenharia de Software"
    scene: Scene { content: imagem }
}


Classes em amarelo, vars de instância em verde
NetBeans IDE 6.9 Beta
Alguns dos possíveis nós...
javafx.scene.text.Text
javafx.scene.image.ImageView
javafx.scene.image.Image
javafx.scene.layout.HBox
javafx.scene.shape.Circle
javafx.scene.shape.Line
javafx.scene.shape.Rectangle
javafx.scene.CustomNode
javafx.scene.Group
Texto
import   javafx.scene.Scene;
import   javafx.scene.text.Text;
import   javafx.scene.text.TextOrigin;
import   javafx.stage.Stage;
import   javafx.scene.text.Font;

Stage {
    scene: Scene {
        content: Text {
            content: "OK"
            textOrigin: TextOrigin.TOP
            font: Font { size: 36 }
        }
    }


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

var msg = "A justiça é a conveniência do mais forte. "
          "(República, Platão).";
Stage {
    scene: Scene {
        content: Text {
            content: msg textOrigin: TextOrigin.TOP
            font: Font { size: 20 } wrappingWidth: 230
            textAlignment: TextAlignment.JUSTIFY
        }
    }
}



               javafx.scene.text.Text
Texto
import javafx.scene.paint.Color;
import javafx.scene.*;
import javafx.scene.text.*;

Stage {
    scene: Scene {
        content: Text {
            content: "Vila Nova"
            textOrigin: TextOrigin.TOP
            font: Font { size: 130 }
            fill: Color.RED
            stroke: Color.BLACK
            strokeWidth: 4
        }
    }
}


               javafx.scene.text.Text
Imagem e texto
import   javafx.scene.image.*;
import   javafx.scene.paint.Color;
import   javafx.scene.*;
import   javafx.scene.text.*;

var server = "www.vilanova.esp.br";
var vn = "http://{server}/pictures/G1342652008113750.jpg";

Stage {
    scene: Scene {
      content: [
         ImageView { image: Image { url: vn } opacity: 0.3 }
         Text { x: 40 y: 140 fill: Color.RED
           content: "Melhor do MundonAno 2036nNão perca!"
           font: Font { size: 60 } textOrigin:TextOrigin.TOP
         }
       ]
    }
}
Exibindo o progresso do download...
  svn export http://exemplos.googlecode.com/svn/trunk/javafx/g5 g5
package g5;

import   javafx.scene.*;
import   javafx.scene.image.*;
import   javafx.scene.text.Text;
import   javafx.stage.Stage;

var srv = "grin.hq.nasa.gov";
var nasa = "http://{srv}/IMAGES/SMALL/GPN-2000-001124.jpg";
var img = Image { url: nasa backgroundLoading: true
                placeholder: Image { url: "{__DIR__}aguarde.png" } };
var perc = Text { x: 40 y: 20 content: bind progresso(img.progress) };

function progresso(percentual : Number) : String {
    if (percentual >= 99.9) then "" else "{percentual}%"
}

def cena = Scene { content: [ ImageView { image: img }, perc ] };

Stage { width: 640 height: 649 scene : cena }


 Exibe ‘background’ enquanto ‘jpg’ é carregada
Ok, vamos praticar...

Más contenido relacionado

Similar a Javafx Gui

Introdução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvasIntrodução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvas
Guilherme
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
Eduardo Mendes
 

Similar a Javafx Gui (20)

JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
React Native - JSday
React Native - JSdayReact Native - JSday
React Native - JSday
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
 
Bada
BadaBada
Bada
 
Canvas element
Canvas elementCanvas element
Canvas element
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem Kotlin
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e python
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Tutorial WebSocket em Java
Tutorial WebSocket em JavaTutorial WebSocket em Java
Tutorial WebSocket em Java
 
Python 08
Python 08Python 08
Python 08
 
Apresentação Phonegap
Apresentação PhonegapApresentação Phonegap
Apresentação Phonegap
 
Java Web Start
Java Web StartJava Web Start
Java Web Start
 
JWS
JWSJWS
JWS
 
Introdução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvasIntrodução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvas
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 

Más de 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)
 

Último

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 

Último (20)

Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 

Javafx Gui

  • 1. JavaFX GUI Fábio Nogueira de Lucena Instituto de Informática (UFG) Graduação em Engenharia de Software http://engenhariadesoftware.inf.br
  • 2. Passos para GUI • Criar um Stage (palco da aplicação) • Criar uma Scene (sequência de Node) com a qual usuários irão interagir • Criar o conteúdo da Scene (Node[]) • Criar variáveis e classes que representam o modelo (model no MVC) • Criar interação (event handlers)
  • 3. Primeiro... • Precisamos conhecer os recursos gráficos...
  • 4. javafx.scene.control.Button Button { text: "Meu primeiro botão!" action: function() {} } Documentação de JavaFX (action é um tipo de função)
  • 5. javafx.scene.control.Button Button { text: "Meu primeiro botão!" action: function() { FX.exit(); } } Ao clicar no botão, a aplicação é finalizada!
  • 6. CheckBox import javafx.scene.control.CheckBox; CheckBox { text: "Clique para marcar/desmarcar selected: true } Inicialmente a opção encontra-se marcada!
  • 7. Text import javafx.scene.control.Label; import javafx.scene.text.Font; Label { text: "Um simples texto!" font: Font { size: 30 } } O valor padrão do tamanho da fonte é alterado!
  • 8. Combinando objetos... import javafx.scene.control.Label; import javafx.scene.text.Font; import javafx.scene.layout.VBox; VBox { content: [ Label { text: "Um simples texto!" font: Font {size: 30 } }, Label { text: "Outro texto (menor)!" font: Font {size: 20 } }] }
  • 9. Combinando objetos... import javafx.scene.layout.HBox; import javafx.scene.shape.Rectangle; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; HBox { content: [ Rectangle { width: 140, height: 90 fill: Color.YELLOW }, Circle { radius: 40 fill: Color.GREEN } ] }
  • 10. ImageView import javafx.scene.image.Image; import javafx.scene.image.ImageView; var base = "http://engenhariadesoftware.inf.br/publico/"; var arquivo = "logo.png"; var urlRef = bind "{base}{arquivo}"; ImageView { image: Image { url: urlRef } }
  • 12. javafx.stage.Stage import javafx.stage.Stage; Stage {} import javafx.stage.Stage; Stage { title: "Título da Aplicação (janela)" width: 350 height: 80 opacity: .6 resizable: false } Conteúdo é vazio (Scene não foi criada)
  • 13. Uma imagem no palco import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.image.*; var jpg = "http://engenhariadesoftware.inf.br/publico/logo.png"; var imagem = ImageView { image: Image { url: jpg } } Stage { title: "Engenharia de Software" scene: Scene { content: imagem } } Classes em amarelo, vars de instância em verde
  • 15. Alguns dos possíveis nós... javafx.scene.text.Text javafx.scene.image.ImageView javafx.scene.image.Image javafx.scene.layout.HBox javafx.scene.shape.Circle javafx.scene.shape.Line javafx.scene.shape.Rectangle javafx.scene.CustomNode javafx.scene.Group
  • 16. Texto import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.scene.text.TextOrigin; import javafx.stage.Stage; import javafx.scene.text.Font; Stage { scene: Scene { content: Text { content: "OK" textOrigin: TextOrigin.TOP font: Font { size: 36 } } } javafx.scene.text.Text
  • 17. Texto import javafx.scene.Scene; import javafx.scene.text.*; import javafx.stage.Stage; var msg = "A justiça é a conveniência do mais forte. " "(República, Platão)."; Stage { scene: Scene { content: Text { content: msg textOrigin: TextOrigin.TOP font: Font { size: 20 } wrappingWidth: 230 textAlignment: TextAlignment.JUSTIFY } } } javafx.scene.text.Text
  • 18. Texto import javafx.scene.paint.Color; import javafx.scene.*; import javafx.scene.text.*; Stage { scene: Scene { content: Text { content: "Vila Nova" textOrigin: TextOrigin.TOP font: Font { size: 130 } fill: Color.RED stroke: Color.BLACK strokeWidth: 4 } } } javafx.scene.text.Text
  • 19. Imagem e texto import javafx.scene.image.*; import javafx.scene.paint.Color; import javafx.scene.*; import javafx.scene.text.*; var server = "www.vilanova.esp.br"; var vn = "http://{server}/pictures/G1342652008113750.jpg"; Stage { scene: Scene { content: [ ImageView { image: Image { url: vn } opacity: 0.3 } Text { x: 40 y: 140 fill: Color.RED content: "Melhor do MundonAno 2036nNão perca!" font: Font { size: 60 } textOrigin:TextOrigin.TOP } ] } }
  • 20.
  • 21. Exibindo o progresso do download... svn export http://exemplos.googlecode.com/svn/trunk/javafx/g5 g5 package g5; import javafx.scene.*; import javafx.scene.image.*; import javafx.scene.text.Text; import javafx.stage.Stage; var srv = "grin.hq.nasa.gov"; var nasa = "http://{srv}/IMAGES/SMALL/GPN-2000-001124.jpg"; var img = Image { url: nasa backgroundLoading: true placeholder: Image { url: "{__DIR__}aguarde.png" } }; var perc = Text { x: 40 y: 20 content: bind progresso(img.progress) }; function progresso(percentual : Number) : String { if (percentual >= 99.9) then "" else "{percentual}%" } def cena = Scene { content: [ ImageView { image: img }, perc ] }; Stage { width: 640 height: 649 scene : cena } Exibe ‘background’ enquanto ‘jpg’ é carregada

Notas del editor