Is Event Dispatcher Threade (Animation)



Documentos relacionados
JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

package br.com.cadastro.visao;

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: imagecomposite FACULDADE DE TECNOLOGIA SENAC PELOTAS

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Resize Shape Basic Shape FACULDADE DE TECNOLOGIA SENAC PELOTAS

Exemplo com SWING 1: Fazer uma aplicação, em Java, que tenha, na tela, uma JProgressBar, um JLabel e um JButton.

O programa abaixo exemplifica o uso da classe Image para carregar e mostrar uma imagem localizada em um arquivo.

MÓDULO 4 SWING Parte 3

Programação Gráfica em Java.

Curso Java Starter. 1

Especialização em Engenharia de Software - CEUT

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

Threads e Concorrência em Java (Material de Apoio)

Técnicas de Programação II

Programação de Computadores - I. Profª Beatriz Profº Israel

Java - Swing. Raphaela Galhardo raphaela@j2eebrasil.com.br

Desenvolvimento de Aplicações Desktop

Criando um aplicação simples com JAVA e MySQL usando NetBeans Parte II

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Java : Comunicação Cliente-Servidor.

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Universidade da Beira Interior. Sistemas Distribuídos

(Aula 17) Threads em Java

Implementando uma Classe e Criando Objetos a partir dela

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS

Java Exemplo MDI. Tela Principal

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

Roteiro para criação de Applet

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

THREADS EM JAVA. George Gomes Cabral

MANIPULAÇÃO DE BANCO DE DADOS UTILIZANDO INTERFACE GRÁFICA

Tratamento de Eventos

CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I E J

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads

2 Orientação a objetos na prática

TextBouncer. JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: FACULDADE DE TECNOLOGIA SENAC PELOTAS

Exemplo Threads com Swing:

CAPA PARA OS CABOS DA CABEÇA

Jogo Da Velha. - Parte 1 - Fazendo a parte gráfica do jogo da Velha

Classes Abstratas e Interfaces

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Java 2 Standard Edition Como criar classes e objetos

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Programação de Computadores e Robocode.

1 Criando um aplicativo visual em Java

Interface Gráficas Parte I. Bruno Crestani Calegaro

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Persistência de Classes em Tabelas de Banco de Dados

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Adicionando Caixas de Verificação no seu Programa Java

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Unidade IV: Ponteiros, Referências e Arrays

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Java Threads. Introdução

Neste tutorial apresentaremos as vantagens e facilidades de usar a ferramenta de Deployment Java Web Start.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

public void setdata(data d) { data = d;

Programação Orientada a Objetos

Programação Orientada a Objeto

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Introdução à Programação. Interfaces Gráficas

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand

Programação Orientada a Objetos em Java

Java. Marcio de Carvalho Victorino

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

Técnicas de Programação II

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

Natureza do Software e dos Sistemas

Exercícios 07 Introdução à POO (Interface Gráfica)

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Programação Concorrente em java - Exercícios Práticos Abril 2004

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

insfcanceof new public switch transient while byte continue extends for int null

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

Banco de Dados. Prof. Leonardo Barreto Campos 1

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Capítulo 31. Outros Recursos para Interfaces Gráficos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Transcrição:

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Is Event Dispatcher Threade (Animation) FACULDADE DE TECNOLOGIA SENAC PELOTAS Nome do aluno: João Vitor Ávila dos Santos Identificação da Turma: 3º Semestre/ Noite Data: 16/05/2010.

1 Nome da Propriedade 1 Is Event Dispatcher Threade (Animation); 1.1 Introdução e Funcioamento A propriedade Is Event Dispatcher Threade quando compilada, abre uma janela com 9 (nove) retângulos (3 x 3) que podem ser preenchidos pelas cores: vermelha, verde ou azul através de um comando do usuário, que pode também optar em preencher os retângulos com cores aleatórias através de cliques em um botão, onde cada clique é uma cor diferente ou igual às três cores citadas acima. 1.2 Código da aplicação /* * To change this template, choose Tools Templates * and open the template in the editor. */ package trabalho; /** * * @author João Vitor */ import java.awt.color; import java.awt.component; import java.awt.dimension; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.random; import javax.swing.abstractaction; import javax.swing.buttongroup; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jradiobutton; import javax.swing.jtable; import javax.swing.swingutilities; import javax.swing.table.abstracttablemodel; import javax.swing.table.tablecellrenderer; public class IsEDTExample extends JPanel { private boolean keeprunning; private static int RED = 0; private static int BLUE = 1; private static int GREEN = 2; Faculdade Senac Pelotas Página 2

private static int VARIABLE = 3; private static int SIZE = 3; private int threadshade; private ColorTableModel tablemodel= new ColorTableModel(); private Thread colorshadethread; public IsEDTExample() { JTable table = new JTable(tableModel); table.setrowheight(100); table.setdefaultrenderer(object.class, new ColorRenderer()); add(table); add(new JLabel("Selecione a cor para um teste : ")); ButtonGroup group = new ButtonGroup(); JRadioButton redoption = new JRadioButton("Vermelho"); group.add(redoption); redoption.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { threadshade = RED; ); JRadioButton blueoption = new JRadioButton("Azul"); group.add(blueoption); blueoption.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { threadshade = BLUE; ); JRadioButton greenoption = new JRadioButton("Verde"); group.add(greenoption); greenoption.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { threadshade = GREEN; ); redoption.setselected(true); this.threadshade = RED; add(redoption); add(greenoption); add(blueoption); add(new JButton(new RandomColorAction())); this.keeprunning = true; this.colorshadethread = new Thread(new RandomColorShadeRunnable()); this.colorshadethread.start(); Faculdade Senac Pelotas Página 3

private class RandomColorAction extends AbstractAction { public RandomColorAction() { super("criar cor aleatória"); public void actionperformed(actionevent e) { IsEDTExample.this.tableModel.generateRandomColor(VARIABLE); private class ColorTableModel extends AbstractTableModel { private Color[][] colors = new Color[3][3]; public ColorTableModel() { for (int i = 0; i < SIZE; i++) { for (int x = 0; x < SIZE; x++) { colors[i][x] = Color.white; public int getrowcount() { return SIZE; public int getcolumncount() { return SIZE; public Object getvalueat(int rowindex, int columnindex) { return colors[rowindex][columnindex]; public void generaterandomcolor(int type) { Random random = new Random(System.currentTimeMillis()); final int row = random.nextint(size); final int column = random.nextint(size); final Color color; if (type == RED) { color = new Color(random.nextInt(256), 0, 0); else if (type == BLUE) { color = new Color(0, 0, random.nextint(256)); else if (type == GREEN) { color = new Color(0, random.nextint(256), 0); else { color = new Color(random.nextInt(256), random.nextint(256), random.nextint(256)); if (SwingUtilities.isEventDispatchThread()) { colors[row][column] = color; firetablecellupdated(row, column); else { SwingUtilities.invokeLater(new Runnable() { public void run() { colors[row][column] = color; Faculdade Senac Pelotas Página 4

firetablecellupdated(row, column); ); private class ColorRenderer implements TableCellRenderer { private JLabel label; public ColorRenderer() { label = new JLabel(); label.setopaque(true); label.setpreferredsize(new Dimension(100, 100)); public Component gettablecellrenderercomponent(jtable table, Object value, boolean isselected, boolean hasfocus, int row, int column) { label.setbackground((color) value); return label; private class RandomColorShadeRunnable implements Runnable { public void run() { while (keeprunning) { tablemodel.generaterandomcolor(threadshade); try { Thread.sleep(500); catch (InterruptedException e) { public static void main(string[] a) { JFrame f = new JFrame("Is Event Dispatch Thread Example"); f.setdefaultcloseoperation(jframe.exit_on_close); f.add(new IsEDTExample()); f.pack(); f.setvisible(true); Faculdade Senac Pelotas Página 5

1.3 Propriedades utilizadas Classes: IsEDTExample : são criadas variáveis privates com os nomes das cores possíveis para a troca, uma variável para determinar a quantidade de retângulos, uma variável tablemodel do tipo ColorTableModel (criação de um novo objeto) que utiliza o método setrowheight para dar um tamanho a janela; VARIABLE : variação de cores(no caso pode variar entre 3 cores); threadshade variável para buscar as cores; colorshadethread usada para as cores aleatórias; kepprunnig : para a inicialização do ciclo(se receber true). Seu construtor cria um novo objeto table do tipo JTable que recebe como parâmetro a variável tablemodel (criação da janela). Usa a classe JRadioButton para criar um objeto para os botões (rádio) onde o usuário seleciona a cor desejada (o nome da variável de referência será o nome da cor escolhida); Quando selecionado um botão a cor do mesmo é passada como parâmetro para uma variável group que faz referência ao método add da classe ButtonGroup. Após, a variável (nome da cor) é usada para instanciar o método addactionlistener (da classe ActionListener) que faz as variações na tonalidade da cor. Esse processo é feito com as três cores possíveis ao usuário. Após, o construtor seleciona uma cor (variável) para começar o processo através do comando: blueoption.setselected(true); this.threadshade = BLUE; Por último é criado o botão para selecionar cor aleatória, e é iniciado o processo através do comando: this.colorshadethread.start(); RandomColorAction : extende a classe AbstractAction e cria um construtor jogando uma frase no botão de criação de cor aleatória, tem o método actionperformed abstrato de AbstractAction, ColorTableModel : tem um variável private que é uma matriz para armazenar a cores dos retângulos o seu construtor percorre o tamanho do retângulo e implementa a cor branca(inicial); Os métodos getrowcount e getcolumncount retornam os tamanhos de linha e coluna, o método getvalueat : retorna uma matriz com as cores de linha e coluna; o método generaterandomcolor : método não compreendido completamente, Faculdade Senac Pelotas Página 6

ColorRenderer (não compreendida):tem um construtor que declara uma variável label do tipo JLabel e nele instancia 2 (dois) métodos : label.setopaque(true); label.setpreferredsize(new Dimension(100, 100)); O método gettablecellrenderercomponent apesar de ser GET recebe 6(seis) variáveis como parâmetro e retorna a variável de referência label.(nas aulas vimos métodos GET s sem parâmetros e declarando o tipo de elemento que irá retornar, diferente visto neste método); RandomColorShadeRunnable : em seu método vazio run() é declarado um procedimento de tentativa e erro( try/cacth ) dentro de uma repetição while, que manda executar a rotina de troca das cores e caso haja algum erro é interrompido o processo enquento a variável (keepruunning)que da início ao procedimento for verdadeira(true). Main : Cria um novo objeto instanciando a classe JFrame, como argumento o título da janela Frame, indica como a janela será fechada através do método setdefaultcloseoperation(), e instancia a classe principal. 1.4 Visualização da Ferramenta em Funcionamento Figura 1. Aqui está sendo selecionada a cor vermelha. Faculdade Senac Pelotas Página 7

Figura 2.. Aqui está sendo selecionada a cor verde. 1.5 Conclusão O que foi aprendido... A reutilização de códigos é um dos benefícios da programação orientada a objetos, podem-se usar muitas classes prontas já exitem no Java. Para programar em O.O é necessário um projeto. Se quisermos aprender a programar é necessário muito estudo além do que é ensinado na faculdade. Dificuldades... A finalidade de algumas classes importadas. Métodos recebendo objetos como parâmetros. Métodos GET s recebendo parâmetos. Lógica. Conhecimentos... Considero que tudo o que foi dito na conclusão são conhecimentos. Aplicação escolhida ( funcionamento)... Uma aplicação dinâmica, onde o usuário interage com o programa podendo escolher uma variação de cores que, após serem aplicadas têm uma rotina individual definida no construtor da classe pricipal. Faculdade Senac Pelotas Página 8