SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Aplicações Gráficas
Marco Antonio
Arquiteto de Software
Fevereiro/2009
Bingo
Bingo
package com.javagames.aplicacoesgraficas;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Bingo extends JFrame {
private JButton botao;
private JLabel lblNumero;
private JLabel lblTamanho;
private JTextField txtTamanho;
private JPanel painelSuperior;
private JPanel painelInferior;
public Bingo(String nome) {
super(nome);
inicializaComponentes();
adicionaComponentes();
adicionaActionListener();
pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Bingo
private void adicionaComponentes() {
getContentPane().setLayout(new BorderLayout());
painelSuperior.add(lblTamanho);
painelSuperior.add(txtTamanho);
painelInferior.add(botao);
getContentPane().add(painelSuperior, BorderLayout.NORTH);
getContentPane().add(painelInferior, BorderLayout.SOUTH);
getContentPane().add(lblNumero, BorderLayout.CENTER);
}
private void inicializaComponentes() {
painelSuperior = new JPanel();
painelInferior = new JPanel();
botao = new JButton("Sortear novo nœmero");
lblNumero = new JLabel(" ");
lblNumero.setFont(new Font("Arial", Font.BOLD, 60));
lblTamanho = new JLabel("Quantidade de nœmeros");
txtTamanho = new JTextField("100", 20);
}
private void adicionaActionListener() {
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
imprimeNumeroAleatorio();
};
});
}
Bingo
private void imprimeNumeroAleatorio() {
lblNumero.setText("" + proximoNumeroAleatorio());
// Bloco de código do Sintetizador de voz
}
private int proximoNumeroAleatorio() {
int tamanho = Integer.parseInt(txtTamanho.getText());
return new Random().nextInt(tamanho);
}
public static void main(String[] args) {
new Bingo("Bingo");
}
}
Sintetizador de Voz
• FreeTTS é um sintetizador de voz escrito em
Java.
• Pode ser baixado em
http://freetts.sourceforge.net ou
http://marcoreis.net/freetts.zip.
• Acrescente as bibliotecas freetts.jar e
cmutimelex.jar nas referências do projeto.
Sintetizador de Voz
• Acrescente o seguinte código na classe
Bingo.
• Todas as classes estão no pacote
com.sun.speech.freetts.*.
Voice[] voices = VoiceManager.getInstance().getVoices();
Voice v = voices[2];
v.allocate();
v.speak(lblNumero.getText());
v.deallocate();
Diretório de imagens
• Crie um diretório para guardar as imagens.
• Esse diretório deve ficar na raíz do projeto.
• Algumas imagens de teste podem ser
encontradas em
http://marcoreis.net/imagens.zip
Utilitários
•
•

•
•

Tarefas repetitivas devem estar separadas em uma classe utilitária.
Qualquer tipo de conversão deve estar fora de suas classes de
negócio, porque geralmente essas operações se repetem em outros
lugares.
No exemplo a seguir temos a UtilImagem, com apenas um método que
retorna uma imagem no respectivo diretório da aplicação.
Este método certamente não poderia estar em uma classe de negócio
da aplicação, pois será usado em várias situações diferentes.
UtilImagem
package com.javagames.util;

import java.awt.*;
import java.io.*;

public class UtilImagem {
private static String diretorioDeImagens = new File("").getAbsolutePath();

public static Image getImagem(String imagem) {
String caminho = diretorioDeImagens + "/imagens/" + imagem;
File f = new File(caminho);
if (f.exists()) {
return Toolkit.getDefaultToolkit().getImage(caminho);
} else {
throw new RuntimeException("Erro ao carregar a imagem.");
}
}
}
Moldura
• Na sequência temos uma classe que
exemplifica o uso da UtilImagem.
• A imagem é desenhada duas vezes. Uma em
tamanho natural, outra com um tamanho fixo
(50, 50).
Moldura
package com.javagames.aplicacoesgraficas;
import java.awt.*;
import javax.swing.*;
import com.javagames.util.*;
public class Moldura extends JFrame {
private String nomeDaImagem;
public Moldura(String nomeDaImagem) {
setTitle("Moldura");
this.nomeDaImagem = nomeDaImagem;
setSize(Toolkit.getDefaultToolkit().getScreenSize());
setVisible(true);
}
public void paint(Graphics g) {
Image imagem = UtilImagem.getImagem(nomeDaImagem);
int posicaoX = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2;
int posicaoY = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2;
g.drawImage(imagem, posicaoY, posicaoX, 50, 50, this);
g.drawImage(imagem, posicaoY, posicaoX, this);
}
public static void main(String[] args) {
new Moldura("yoda-tux-256.png");
}
}
Forma geométrica
• A primeira classe do framework de
desenvolvimento de jogos.
• Framework é um conjunto de classes com
funcionalidades e escopo bem definido.
• Além disso, deve ter um padrão a ser seguido
para facilitar o desenvolvimento de novas
classes.
FormaGeometrica
package com.javagames.circulos;
import java.awt.*;
import javax.swing.*;
public class FormaGeometrica extends JFrame implements Runnable {
//Definicao dos tamanhos e dimensoes
private int dimensaoX = 4;
private int dimensaoY = 4;
private int posicaoX = 10;
private int posicaoY = 100;
private int tamanhoX = 30;
private int tamanhoY = 30;
private double angulo = 10;
private JPanel painel;
//Criacao do frame principal
public FormaGeometrica(Color cor) {
setBackground(cor);
painel = new JPanel();
getContentPane().add(painel);
setVisible(true);
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
FormaGeometrica
//Inicio da thread principal da aplicacao.
public static void main(String[] args) {
FormaGeometrica bola = new FormaGeometrica(Color.WHITE);
Thread t = new Thread(bola);
t.start();
}
//Enquanto (true) move a forma geometrica, espera 500ms e faz tudo novamente
public void run() {
while (true) {
move();
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
}
}
}
FormaGeometrica
//Desenha a primeira forma geometrica.
public void desenha() {
Graphics g = painel.getGraphics();
g.fillOval(posicaoX, posicaoY, tamanhoX, tamanhoY);
}
//Move a forma geometrica na diagonal – tente outras valores
public void move() {
Graphics g = painel.getGraphics();
g.drawOval(posicaoX, posicaoY, tamanhoX,tamanhoY);
posicaoX += dimensaoX;
posicaoY += dimensaoY;
}
//Chamado na primeira vez que o painel é carregado
@Override
public void paint(Graphics g) {
desenha();
}
}

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Java swing
Java swingJava swing
Java swing
 
Java6
Java6Java6
Java6
 
Java7
Java7Java7
Java7
 
Java4
Java4Java4
Java4
 
Hiearquia Window
Hiearquia WindowHiearquia Window
Hiearquia Window
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Java2
Java2Java2
Java2
 
Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Java10
Java10Java10
Java10
 
Aula05
Aula05Aula05
Aula05
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1
 
Teste unitário
Teste unitárioTeste unitário
Teste unitário
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 

Ähnlich wie Aplicacoes gráficas em Java

Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Vanderson Silva
 
Interface Gráfica.ppt
Interface Gráfica.pptInterface Gráfica.ppt
Interface Gráfica.pptJoberthSilva
 
Apostia de Jogos com Java
Apostia de Jogos com JavaApostia de Jogos com Java
Apostia de Jogos com JavaMarco Reis
 
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Caelum
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)Luís Cobucci
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplosCalvin Rodrigues
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)jose-junior89
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Diego Pacheco
 

Ähnlich wie Aplicacoes gráficas em Java (20)

Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
Interface Gráfica.ppt
Interface Gráfica.pptInterface Gráfica.ppt
Interface Gráfica.ppt
 
Tutorial java swing
Tutorial java swingTutorial java swing
Tutorial java swing
 
Use CDI em seus projetos Java !
Use CDI em seus projetos Java !Use CDI em seus projetos Java !
Use CDI em seus projetos Java !
 
Apostia de Jogos com Java
Apostia de Jogos com JavaApostia de Jogos com Java
Apostia de Jogos com Java
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplos
 
CURSO JAVA 02
CURSO JAVA 02CURSO JAVA 02
CURSO JAVA 02
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
Vraptor
VraptorVraptor
Vraptor
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Labs Jogos Java
Labs Jogos JavaLabs Jogos Java
Labs Jogos Java
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
 
Internacionalizacao
InternacionalizacaoInternacionalizacao
Internacionalizacao
 

Aplicacoes gráficas em Java

  • 3. Bingo package com.javagames.aplicacoesgraficas; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class Bingo extends JFrame { private JButton botao; private JLabel lblNumero; private JLabel lblTamanho; private JTextField txtTamanho; private JPanel painelSuperior; private JPanel painelInferior; public Bingo(String nome) { super(nome); inicializaComponentes(); adicionaComponentes(); adicionaActionListener(); pack(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
  • 4. Bingo private void adicionaComponentes() { getContentPane().setLayout(new BorderLayout()); painelSuperior.add(lblTamanho); painelSuperior.add(txtTamanho); painelInferior.add(botao); getContentPane().add(painelSuperior, BorderLayout.NORTH); getContentPane().add(painelInferior, BorderLayout.SOUTH); getContentPane().add(lblNumero, BorderLayout.CENTER); } private void inicializaComponentes() { painelSuperior = new JPanel(); painelInferior = new JPanel(); botao = new JButton("Sortear novo nœmero"); lblNumero = new JLabel(" "); lblNumero.setFont(new Font("Arial", Font.BOLD, 60)); lblTamanho = new JLabel("Quantidade de nœmeros"); txtTamanho = new JTextField("100", 20); } private void adicionaActionListener() { botao.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { imprimeNumeroAleatorio(); }; }); }
  • 5. Bingo private void imprimeNumeroAleatorio() { lblNumero.setText("" + proximoNumeroAleatorio()); // Bloco de código do Sintetizador de voz } private int proximoNumeroAleatorio() { int tamanho = Integer.parseInt(txtTamanho.getText()); return new Random().nextInt(tamanho); } public static void main(String[] args) { new Bingo("Bingo"); } }
  • 6. Sintetizador de Voz • FreeTTS é um sintetizador de voz escrito em Java. • Pode ser baixado em http://freetts.sourceforge.net ou http://marcoreis.net/freetts.zip. • Acrescente as bibliotecas freetts.jar e cmutimelex.jar nas referências do projeto.
  • 7. Sintetizador de Voz • Acrescente o seguinte código na classe Bingo. • Todas as classes estão no pacote com.sun.speech.freetts.*. Voice[] voices = VoiceManager.getInstance().getVoices(); Voice v = voices[2]; v.allocate(); v.speak(lblNumero.getText()); v.deallocate();
  • 8. Diretório de imagens • Crie um diretório para guardar as imagens. • Esse diretório deve ficar na raíz do projeto. • Algumas imagens de teste podem ser encontradas em http://marcoreis.net/imagens.zip
  • 9. Utilitários • • • • Tarefas repetitivas devem estar separadas em uma classe utilitária. Qualquer tipo de conversão deve estar fora de suas classes de negócio, porque geralmente essas operações se repetem em outros lugares. No exemplo a seguir temos a UtilImagem, com apenas um método que retorna uma imagem no respectivo diretório da aplicação. Este método certamente não poderia estar em uma classe de negócio da aplicação, pois será usado em várias situações diferentes.
  • 10. UtilImagem package com.javagames.util; import java.awt.*; import java.io.*; public class UtilImagem { private static String diretorioDeImagens = new File("").getAbsolutePath(); public static Image getImagem(String imagem) { String caminho = diretorioDeImagens + "/imagens/" + imagem; File f = new File(caminho); if (f.exists()) { return Toolkit.getDefaultToolkit().getImage(caminho); } else { throw new RuntimeException("Erro ao carregar a imagem."); } } }
  • 11. Moldura • Na sequência temos uma classe que exemplifica o uso da UtilImagem. • A imagem é desenhada duas vezes. Uma em tamanho natural, outra com um tamanho fixo (50, 50).
  • 12. Moldura package com.javagames.aplicacoesgraficas; import java.awt.*; import javax.swing.*; import com.javagames.util.*; public class Moldura extends JFrame { private String nomeDaImagem; public Moldura(String nomeDaImagem) { setTitle("Moldura"); this.nomeDaImagem = nomeDaImagem; setSize(Toolkit.getDefaultToolkit().getScreenSize()); setVisible(true); } public void paint(Graphics g) { Image imagem = UtilImagem.getImagem(nomeDaImagem); int posicaoX = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2; int posicaoY = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2; g.drawImage(imagem, posicaoY, posicaoX, 50, 50, this); g.drawImage(imagem, posicaoY, posicaoX, this); } public static void main(String[] args) { new Moldura("yoda-tux-256.png"); } }
  • 13. Forma geométrica • A primeira classe do framework de desenvolvimento de jogos. • Framework é um conjunto de classes com funcionalidades e escopo bem definido. • Além disso, deve ter um padrão a ser seguido para facilitar o desenvolvimento de novas classes.
  • 14. FormaGeometrica package com.javagames.circulos; import java.awt.*; import javax.swing.*; public class FormaGeometrica extends JFrame implements Runnable { //Definicao dos tamanhos e dimensoes private int dimensaoX = 4; private int dimensaoY = 4; private int posicaoX = 10; private int posicaoY = 100; private int tamanhoX = 30; private int tamanhoY = 30; private double angulo = 10; private JPanel painel; //Criacao do frame principal public FormaGeometrica(Color cor) { setBackground(cor); painel = new JPanel(); getContentPane().add(painel); setVisible(true); setSize(600, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
  • 15. FormaGeometrica //Inicio da thread principal da aplicacao. public static void main(String[] args) { FormaGeometrica bola = new FormaGeometrica(Color.WHITE); Thread t = new Thread(bola); t.start(); } //Enquanto (true) move a forma geometrica, espera 500ms e faz tudo novamente public void run() { while (true) { move(); try { Thread.sleep(500); } catch (InterruptedException ex) { } } }
  • 16. FormaGeometrica //Desenha a primeira forma geometrica. public void desenha() { Graphics g = painel.getGraphics(); g.fillOval(posicaoX, posicaoY, tamanhoX, tamanhoY); } //Move a forma geometrica na diagonal – tente outras valores public void move() { Graphics g = painel.getGraphics(); g.drawOval(posicaoX, posicaoY, tamanhoX,tamanhoY); posicaoX += dimensaoX; posicaoY += dimensaoY; } //Chamado na primeira vez que o painel é carregado @Override public void paint(Graphics g) { desenha(); } }