3.10 CRIANDO DESENHOS SIMPLES CLASSE GRAPHICS E OUTRAS

Documentos relacionados
UML. Diagrama de Classes de Projeto e Diagrama de Objetos Análise e Projeto de Software. Profª. Cibele da Rosa Christ

Como ajustar o projeto para integrá-lo com o Moodle

1. Propósito. Permite definir o custo das operações realizadas por segundo pelo trabalhador, durante todo o dia de trabalho.

4 Extensão do modelo de Misme e Fimbel para a determinação da distribuição cumulativa da atenuação diferencial entre dois enlaces convergentes

Organização de Computadores Digitais. Cap.10: Conjunto de Instruções: Modos de Endereçamento e Formatos

SISTEMA GALGO FATURAMENTO CONSULTA AO DEMONSTRATIVO DE TRANSAÇÕES TARIFADAS PRODUTO PROCESSO GUIA DO USUÁRIO

10. Escreva um programa que leia um texto e duas palavras e substitua todas as ocorrências da primeira palavra com a segunda palavra.

L = R AULA 8 - TRIGONOMETRIA TRIGONOMETRIA NA CIRCUNFERÊNCIA TRIÂNGULO RETÂNGULO. sen. cos a b. sen. cos a tg b tg. sen cos 90 sen cos 1 tg tg.

Manual do Utilizador

Variáveis e Tipo de Dados

Sistemas de coordenadas tridimensionais. Translação e rotação de sistemas. Prof. Dr. Carlos Aurélio Nadal. Translação e rotação de sistemas

Sistemas de coordenadas tridimensionais. Translação e rotação de sistemas. Prof. Dr. Carlos Aurélio Nadal. Translação e rotação de sistemas

Rescisão Complementar

Capítulo 4 Instruções de Controle: Parte I

Manual de BRB FERRAMENTA DE INTERCÂMBIO ELETRÔNICO DE DADOS. BRB Banco de Brasília SA

OpenTouch Conversation Web

A) O volume de cada bloco é igual à área da base multiplicada pela altura, isto é, 4 1

Comunicado Cetip n 091/ de setembro de 2013

Algoritmos e Estruturas de Dados 1 Lista de Exercícios 2

CATÁLOGO DE APLICAÇÕES PEFIN SERASA

Projecto de Lógica para Programação. Videoteca em Prolog. ( º semestre)

grau) é de nida por:

Análise da Paisagem Pedreira "Mané"

Disciplina: Programação III Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 184

MATEMÁTICA APLICADA RESOLUÇÃO

Cadastrar Proposta de Evento

Manual de Instalação

Cartografia e Geoprocessamento Parte 1. Geoide, Datum e Sistema de Coordenadas Geográficas

CATÁLOGO DE APLICAÇÕES Geração de Guias para ST, DIFAL e FCP

ALGORITMOS. Expressões e Instruções PrimiKvas. Alessandro J. de Souza DIATINF - IFRN. twi;er.

Halliday & Resnick Fundamentos de Física

MANUAL DO USUÁRIO. SVMPC1 Manual de Operação Ver 1.0

PROCEDIMENTO OPERATIVO Carimbagem, registo, magnetização e atribuição de cotas

SUPERFÍCIE E CURVA. F(x, y, z) = 0

Em geometria, são usados símbolos e termos que devemos nos familiarizar:

1. A figura representa uma peça de madeira que é metade de um cilindro. Determine: a) a área total da peça. b) o seu volume.

CAPÍTULO - 6 CICLOCONVERSORES

Tema: Estudo do Comportamento de Funções usando Cálculo Diferencial. Seja definida em um intervalo e sejam e pontos deste intervalo.

As informações apresentadas neste documento não dispensam a consulta da legislação em vigor e o Programa da disciplina.

TransactionCentre Guia Referência Rápida Troca de Mensagens. Cancelamento

Descrição do serviço. Visão geral do serviço. Escopo dos serviços Copilot Optimize. Copilot Optimize CAA Escopo

Manual de Versão Group Folha. e-social. Manual de cadastros dos novos campos e validação

Caixas Ativas e Passivas. SKY 3000, SKY 2200, SKY 700, SKY 600 e NASH Áreas de Cobertura e Quantidade de Público

CÁLCULO I. Aula n o 02: Funções. Denir função e conhecer os seus elementos; Listar as principais funções e seus grácos.

Notas de aula prática de Mecânica dos Solos II (parte 13)

CRC-Nacional Central de Registro Civil de Minas Gerais Certidão Online - Serventia

Halliday & Resnick Fundamentos de Física

Gestão Administrativa 3 COMUNICAÇÃO DE INVENTÁRIOS

SUMÁRIO 1 Documentação de Código Fonte Ativação Integração dos Dados Integraç ão com e-commerce Ciashop...

2 Modelagem da previsão de atenuação por chuvas em enlaces GEO

Guia de customização de template FWK... 1 GERAL... 3 Favicon (geral)... 3 Cor principal... 3 Cor secundária... 5 Cor de texto escuro...

Boletim Técnico. CAGED Portaria 1129/2014 MTE. Procedimento para Implementação. Procedimento para Utilização

Tributação Padrão para Imobilizado

Questão 13. Questão 14. Resposta. Resposta

Observação de fenômenos astronômicos. Como e Para Quê ESFERA CELESTE

CONCURSO DE ADMISSÃO AO CURSO DE GRADUAÇÃO FÍSICA FOLHA DE QUESTÕES

FKcorreiosg2_cp1 - Complemento Transportadoras

Técnica do Fluxograma

Processo TCar Balanço Móbile

Tutorial de acesso ao Sistema de Gestão de Telefonia - Novartis

DETECTOR FOTOELÉTRICO ATIVO, DE 3 FEIXES, COM CONVERSÃO DIGITAL DE FREQUÊNCIA MANUAL DE INSTALAÇÃO

Tema: Conoscopia de Minerais Biaxiais

CARTILHA DE APOIO AO USUÁRIO SIGA

Transcrição:

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 128 3.10 CRIANDO DESENHOS SIMPLES CLASSE GRAPHICS E OUTRAS Origem: Capítul 4 Intruções de Cntrle: Parte 1; Capítul 5 Instruções de Cntrle: Parte 2; Capítul 6 Métds: um exame mais prfund. Capítul 7 Arrays. Capítul 8 Classes e Objets: um exame mais prfund. Capítul 9: Prgramaçã rientada a bjets: herança. Tópic em cada capítul: Estud de cas de GUIs e imagens gráficas. Livr: Java Cm Prgramar, Deitel & Deitel, 6ª. Ediçã O Java dispnibiliza um ótim suprte gráfic, decrrente de suas várias APIs. Sistema de crdenadas d Java: Definid pelas crdenadas x e y - Também cnhecidas cm crdenadas hrizntais e verticais, respectivamente; O Pnt inicial (0,0) é lcalizad n cant superir esquerd; Unidades crdenadas sã medidas em pixels a lng d eix X e d eix Y. Assim, é pssível identificar cada pnt na tela e indicar nde as imagens devem ser exibidas. A criaçã de desenhs simples n Java nrmalmente pde ser realizada cm trabalh cnjunt das seguintes classes: A Classe Graphics d pacte java.awt frnece métds para desenhar text e frmas, tais cm: Métd drawline() - desenha uma linha a partir das crdenadas definidas pels seus dis primeirs arguments se estendend até as crdenadas definidas pels seus dis próxims arguments; Métd drawrect() desenha um retângul, send frnecid a crdenada superir esquerda (s dis primeirs arguments) a largura e a altura (s dis próxims arguments); Métd drawoval() desenha um val, tend cm arguments s mesms necessáris para desenh de um retângul, send que val é desenhad dentr deste, a partir de seus limites; Métd fillrect() similar a drawrect(), prém permite a criaçã de retânguls preenchids cm alguma cr; Métd filloval() similar a drawoval(), prém permite a criaçã de retânguls preenchids cm alguma cr. Se a largura e a altura tiverem mesm valr será desenhad um círcul; Métd setclr() - cnfigura a cr d desenh atual, requerend um argument d tip Clr. A definiçã da cr d desenh deve ser feita antes da chamada d métd que realiza desenh; Métd fillarc() Permite a criaçã de arcs, tend estes seu interir preenchid cm alguma cr. Desenhar arcs n Java é semelhante a desenhar vais (um arc é simplesmente uma fatia de uma val). Os parâmetrs que devem ser infrmads sã: crdenadas x e y d cant superir esquerd, largura, altura,

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 129 ângul inicial na val, varredura/quantidade de arc a cbrir (ângul final). Os quatr primeirs arguments representam retângul delimitadr em que arc será desenhad. Os dis últims sã medids em graus, cm zer grau apntand para a direita. Uma varredura psitiva desenha arc anti-hrári, enquant uma negativa desenha arc n sentid hrári; Métd drawarc() similar a fillarc(), prém permite a criaçã de arcs sem interir preenchid cm alguma cr, cntend apenas a brda. A Classe Clr d pacte java.awt é utilizada para adicinar (especificar) cres a desenh send trabalhad. Os métds acima exibem apenas s cntrns ds desenhs. Adicinar cres traz utra dimensã para s desenhs que um usuári vê na tela d cmputadr, que requer us de frmas preenchidas cm cres sólidas; As cres exibidas nas telas ds cmputadres sã definidas pels seus cmpnentes vermelh, verde e azul. Esses cmpnentes, denminads valres RGB, cntém valres inteirs entre 0 e 255. Quant mais alt valr de um cmpnente particular, mais brilhante uma smbra particular ficará na cr final; Pr cnveniência, um bjet Clr cntém 13 bjets static Clr prédefinids, send eles: Clr.BLACK, Clr.BLUE, Clr.CYAN, Clr.DARK_GRAY, Clr.GRAY, Clr.GREEN, Clr.LIGHT_GRAY, Clr.MAGENTA, Clr.ORANGE, Clr.PINK, Clr.RED, Clr.WHITE e Clr.YELLOW; A classe Clr também cntém um cnstrutr na frma public Clr (int r, int g, int b) que permite criar cres persnalizadas especificand s valres para s cmpnentes vermelh, verde e azul individuais de uma cr; Os valres estátics de tal classe cstumam ser passads cm arguments para métd setclr() da classe Graphics, quand nã há necessidade de se trabalhar cm cres persnalizadas. A Classe JPanel d pacte javax.swing frnece uma área em que desenhar através de um bjet Graphics. Tal classe é habitualmente superclasse da classe que cnterá desenh a ser trabalhad; Cada JPanel tem um métd paintcmpnent(), nde cstuma ser dispnibilizad códig para realizaçã d desenh. paintcmpnent() é disparad sempre que sistema precisa exibir JPanel. Ocrrências habituais: quand painel é exibid pela 1ª. Vez, quand é cultad e trna-se nvamente visível, quand a janela é redimensinada; Os métds getwidth() e getheight() retrnam a largura e a altura da JPanel, respectivamente; O métd setbackgrund() Cnfigura a cr de fund d cmpnente de acrd cm a cr infrmada cm parâmetr (e que deve ser um bjet da classe Clr). A classe JFrame d pacte javax.swing permite a prgramadr criar uma janela a partir da qual pde ser exibid painel que cnterá desenh.

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 130 O métd setdefaultclseoperatin() - Passa a cnstante JFrame.EXIT_ON_CLOSE cm seu argument. Cnfiguraçã que indica que a aplicaçã deve terminar quand usuári fechar a janela; O métd add() - Anexa uma JPanel (argument d métd) à JFrame. OBS.: Outrs tips de bjets também pdem ser adicinads; O métd setsize() - Cnfigura a largura (primeir argument) e altura (segund argument) da JFrame; O métd setvisible() Habilita a visualizaçã da frame, quand recebe true cm argument. Um exempl simples de desenh de linhas pde ser encntrad nas classes DrawPanel e DrawPanelTest (Figuras 4.19 e 4.20, livr Java-Cm Prgramar, capítul 4, códig-fnte em anex), que sã respnsáveis pr gerar a figura abaix identificada: Um utr exempl, para desenh de retânguls e vais, é encntrad nas classes Shapes e ShapesTest (Figuras 5.26 e 5.27, livr Java Cm Prgramar, capítul 5, códig-fnte em anex), que sã respnsáveis pr gerar as figuras abaix identificadas: Um terceir exempl é demnstrad através das classes DrawSmiley e DrawSmileyTest (Figuras 6.16 e 6.17, livr Java Cm Prgramar, capítul 6, códig-fnte em anex), que tem cm resultad a exibiçã da figura abaix. O mais interessante de se destacar é cm fi

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 131 realizad desenh da bca d smile (através da chamada cmbinadas ds métds fillrect() e filloval() ): Um exempl da aplicaçã de fillarc() pde ser encntrad nas classes DrawRainbw e DrawRainbwTest (Figuras 7.22 e 7.23, livr Java- Cm Prgramar, capítul 7, códig-fnte em anex), que sã respnsáveis pr gerar a figura abaix identificada: Utilizand bjets cm imagens gráficas Para criar um desenh cnsistente que permaneça idêntic tdas as vezes que ele é desenhad deve-se armazenar infrmações sbre as frmas exibidas de md que elas pssam ser reprduzidas exatamente da mesma maneira tdas as vezes que sistema chamar métd paintcmpnent(). Uma maneira de se fazer iss é criar classe(s) que armazena(m) infrmações sbre cada frma. Essa(s) classe(s) pde(m) ser trnada(s) inteligente(s) permitind que seus bjets desenhem a si própris se acmpanhads de um bjet Graphics. Um exempl que segue a dica acima apresentada está dispnibilizad nas classes MyLine, DrawPanel e TestDraw (Livr Java-Cm Prgramar, capítul 8, Figuras 8.21, 8.22 e 8.23, códig-fnte em anex) e que prduz desenh abaix.

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 132 A classe MyLine imprta as classes Clr e Graphics e cntém atributs para uma cr e as crdenadas necessárias a desenh de uma linha. Pssui um cnstrutr e um métd draw() que recebe um parâmetr Graphics e seta uma cr e desenha uma linha utilizand s valres ds atributs e s métds necessáris pertencentes à classe Graphics. Já a classe drawpanel vai gerar bjets cm valres aletóris da classe MyLine, armazenands em um atribut array (também de tamanh aleatóri). O cnstrutr de tal classe inicializa seus atributs. O métd paintcmpnent() percrre array de bjets MyLine disparand métd draw() de cada bjet. A classe TestDraw cnfigura uma nva janela para exibir painel. Cm as crdenadas para as linhas sã cnfiguradas apenas uma vez n cnstrutr, desenh nã muda se paintcmpnent() fr chamad para atualizar desenh na tela. Exibind text e imagens utilizand rótuls Os Rótuls sã usads para exibir infrmações e instruções em uma interface gráfica cm usuári. As classes a serem trabalhadas basicamente sã: A classe JLabel d pacte javax.swing. É usada para exibir uma linha de text, uma imagem u tant text quant imagem; Um cnstrutr dessa classe deve receber um argument String (para exibir um rótul de text) u um argument d tip ImageIcn (para exibir um rótul de ícne); O métd settext() permite alterar text a ser exibid, recebend cm argument uma String cm nv text a ser cnsiderad; O métd seticn() permite alterar ícne a ser exibid, recebend cm argument um Icn cm nv ícne a ser cnsiderad. A classe BrderLayut d pacte java.awt. Cntém cnstantes que especificam nde é pssível clcar cmpnentes GUI em uma JFrame. Os nmes dessas cnstantes crrespndem a cada uma das regiões que a JFrame aceita. A classe ImageIcn d pacte javax.swing. Representa uma imagem que pde ser exibida em um JLabel; Tal classe pde carregar imagens em frmat GIF, JPEG, PNG e JPG; Um cnstrutr dessa classe deve receber um argument String que é a identificaçã d caminh para arquiv cm a imagem. A classe JFrame d pacte javax.swing. Utilizada para a exibiçã ds labels a serem criads; O métd add() pssui uma versã sbrecarregada que aceita dis parâmetrs, send usad para adicinar cmpnentes criads à frame, na psiçã indicada. O primeir parâmetr é cmpnente que se quer adicinar (cm um JLabel) e

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 133 segund é a regiã em que ele deve ser clcad (que deve ser uma cnstante de BrderLayut). A chamar métd add() cm apenas um argument JFrame clca tal cmpnente na regiã CENTER; Td JFrame tem um layut assciad que ajuda a psicinar s cmpnentes GUI que sã adicinads a ele. O layut padrã d JFrame é cnhecid cm BrderLayut e tem cinc regiões NORTH (lad superir), SOUTH (lad inferir), EAST (lad esquerd), WEST (lad direit), CENTER. Se uma psiçã já cntiver um cmpnente, entã um nv cmpnente que fr clcad na mesma psiçã irá cupar seu lugar. A classe LabelDem (livr Java-Cm Prgramar, capítul 9, Figura 9.19, códig-fnte em anex) demnstra váris recurss d JLabel, a gerar a figura abaix. Tal classe cria três labels, um de text, um de imagem e um de imagem cm text, além de uma Frame que irá exibir cada um desses rótuls em um lcal diferente da tela. 3.10.1 DICAS DE LEITURA Material indicad n iníci d tópic, cm rigem d text dispnibilizad; Fóruns na Internet. 3.10.2 EXERCÍCIOS 1. Utilizand s métds para criaçã de desenhs acima identificads crie aplicativs para bter as seguintes figuras: (a) (b)

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 134 (c) (d) (e) (f) (g) OBS: (a) Sã desenhadas uma série de linhas, tend sempre cm um ds pnts extrems cant superir esquerd, até que se cubra a metade superir esquerda d painel. Sugere-se passs de tamanh 15 para realizar a variaçã necessária; (b) É um desenh similar a anterir, havend 4 séries de linhas, nde a cada mment s pnts extrems das linhas sã um ds cants da tela; (c) Pde-se iniciar dividind cada brda em um númer igual de increments (pde-se usar nvamente 15). A primeira linha inicia n cant superir esquerd e termina um pass à direita na extremidade inferir. Para cada linha sucessiva, mva-se para baix um increment na brda esquerda e um increment para a direita na brda inferir. Cntinuar desenhand linhas até alcançar cant inferir direit; (d) Similar a item c, prém prjet deve ser espelhad em tds s quatr cants; (e) Desenhar 12 círculs cncêntrics. O círcul mais intern deve ter um rai de 10 pixels e cada círcul sucessiv deve ter um rai 10 pixels mair d que anterir. Cmeçar lcalizand centr d JPanel. Para bter cant superir esquerd de um círcul, mva-

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 135 se um rai para cima e um rai para a esquerda a partir d centr. A largura e altura d retângul delimitadr sã iguais a diâmetr d círcul (duas vezes rai); (f) e (g) - Para gerar s desenhs cm as cres preenchidas sugere-se us de cres aleatórias, que pde ser btid cm a utilizaçã d cnstrutr Clr (int r, int g, int b); - A última figura trabalha cm a geraçã aleatória de cres e tamanh das figuras. Cnsidere que prgrama irá desenhar 10 figuras, alternand retânguls e vais. A cr, as crdenadas e as dimensões devem ser selecinadas aleatriamente. As crdenadas devem ser esclhidas cm base na largura e na altura d painel. O cmpriment ds lads deve estar limitad à metade da largura u altura da janela; - Destaque a bservar que crre a se alterar tamanh da frame da letra g. 2. Utilizand s métds para criaçã de desenhs anterirmente identificads crie aplicativs para bter as seguintes figuras: A letra (a) apresenta desenh de uma espiral cm a frma quadrada, centralizada n painel, utilizand métd drawline(). Uma técnica é utilizar um lp que aumenta cmpriment da linha depis de desenhar cada duas linhas. A direçã na qual desenhar a próxima linha deve seguir um padrã distint (ex.: para baix, para esquerda, para cima, para direita). A letra (b) apresenta desenh de uma espiral circular, utilizand métd drawarc() para desenhar um semicírcul pr vez. Cada semicírcul sucessiv deve ter um rai mair e cntinuar a desenhar nde semicírcul anterir cncluir. (a) (b) 3. Sugere-se ampliar prgrama d exempl que desenha linha aleatórias para desenhar aleatriamente retânguls e vais, send cada um cntemplad pr uma classe. As classes devem incluir as crdenadas x1, y1, x2, y2, cr e um flag blean para determinar se a frma é uma frma preenchida. Cada classe deve frnecer s métds getupperleftx(), getupperlefty(), getwidth() e getheight() que calcula a crdenada x superir esquerda ( menr ds valres entre x1 e x2), a crdenada y superir esquerda ( menr ds valres entre y1 e y2), a largura (valr abslut da diferença entre x1 e x2) e a altura (valr abslut da diferença entre y1 e y2) respectivamente. A classe drawpanel deve declarar três arrays, um para cada tip de frma, cm cmpriment aleatóri (até limite de 5). Os valres ds elements ds arrays também devem ser gerads aleatriamente. As três classes ainda devem incluir seguinte: a. Um cnstrutr sem arguments que cnfigura tdas as crdenadas cm 0, a cr cm Clr.BLACK e flag cm false; b. Um métd setter para as variáveis de instância de cada classe. Esse métd deve verificar se valr a ser atualizad é psitiv (cas cntrári deve-se

Disciplina: Prgramaçã III Cnteúd: Prgramaçã Orientada a Objets Linguagem JAVA Página: 136 assumir zer) antes de realizar a atualizaçã. Os cnstrutres devem disparar tais métds a invés de realizar a atribuiçã das variáveis de instância diretamente; c. Um métd getter para as variáveis de instância de cada classe. O métd draw() deve disparar tais métds, a invés de acessar as variáveis de instância diretamente. 4. Mdifique exercíci acima para incluir um JLabel cm uma barra de status que exibe cntagens para representar númer de cada frma exibida. A classe drawpanel deve declarar um métd que retrna uma String cm text d status. Em main() deve-se instanciar a DrawPanel e em seguida JLabel necessári, cm text de status cm argument d cnstrutr. Sugere-se anexar rótul à regiã SOUTH d frame. OBSERVAÇÃO: É interessante bservar ns dis últims exercícis que há muitas semelhanças entre as classes de frma, que sugere us de herança para cmpartilhament ds membrs cmuns, permitind também que se manipule plimrficamente s bjets de tds s três tips de frma utilizand variáveis d tip da superclasse.