Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Estudos do pacote awt ; Classe Frame;Estrutura básica de implementação de uma iterface gráfica;criação de container para posicionamento de objetos; Objetos de controle e Eventos Site http//www1.univap.br/~wagner/ec.html Prof. Responsáveis Wagner Santos C. de Jesus APOO 1
Modelo do ambiente Gráfico (OO) Interface Gráfica Classe A Métodos Classe B Métodos Classe C Métodos 2
O que vem a ser o pacote (awt) Para trabalharmos na linguagem Java com ferramentas para criação e Lay-out de Formulários umadasferramentasquepodemosusaréumpacote gráfico denominado (awt) cujo significado é (Abstract Window ToolKit - Kit de abstração para o trabalho com Janelas). Com essa ferramenta é possível nos trabalharmos com componentes gráficos com botões, caixa de texto etc. 3
Usando o pacote (awt -Abstract Window Toolkit). Para usar o componentes desse pacote é necessário importa-lo para seu programa isso é feito usando o comando(import). 4
Funcionamento (awt) 5
Usando comando import. Importandoopacote (awt). Exemplo importjava.awt.*; 6
Frame Criando um formulário para uma aplicação. Para se criar um formulário em Java usamos uma classe chamda Frame(). Obs Um Frame pode ser instanciado como qualquer outro objeto mais para criarmos uma estrutura onde todos os objetos serão criados a partir de um Frame usamos o comando extends. 7
Herança 8
extends -Extendendo uma Classe extendscriaumasuperclasseparaoobjeto permitindo que todos os outros estejam contidos nessa mesma classe. 9
Estrutura Básica. public class teste extends Frame{ Criação dos Componentes gráficos } 10
Exemplo Estrutura Completa public class teste extends Frame{ publicteste(){ } Criação dos Componentes gráficos public eventos(){ CriaçãodaLógica... } publicstaticvoidmain(...){ } <Instancia da classe> } 11
Criando os componentes gráficos Panel() Para se adicionar um objeto em qualquer parte da aplicação é necessário a criação de um painel para esse objeto. 12
Sintaxe Panel <Nome-Objeto>; Exemplo Panelp1; p1=newpanel(); 13
Label() Para se criar um rótulo escrito na tela é necessário usar a classe Label(). Sinatxe Label <Nome-Objeto>; Exemplo Label L1; L1=newLabel("MensagemEnviada..."); 14
Button() Para se cria um objeto botão é necessário usar a classe button. Sintaxe Button <Objeto>; Exemplo Button Botao1; Botao1=newButton("Ok"); 15
TextField() Classe que permite a criação de uma caixa de texto. Sintaxe TextField <Objeto>; Exemplo TextField text1; text1 = new TextField("Mensagem",10); ObsAstringmensagemiráaparecernacaixadetextoeovalor10é otamanhodacaixadetexto. 16
Métodos setlayout() Para se criar um formulário é necessário dizer que tipo de formulário estamos usando, para isso usamos o método setlayout(). Sintaxe setlayout(<tipo-do-formulário>); ObsOstiposdeformuláriossãoFluxo,Borda,Grade.Sendoqueiremos tratar apenas com o estilo de Bordas. 17
show() Método que exibe o formulário na tela. Exemplo show(); ObsCasoométodoshow()nãoseja colocado no programa o formulário não será exibido. 18
Sistema de coordenadas Tradicional Eixo y Y Crescente - Crescente X Origem(0,0) Eixo X 19
O sistema de coordenada gráfica Java Origem(0,0) Eixo x X Crescente Y crescente 20
Exemplo setlayout() Exemplo setlayout(newborderlayout()); 21
O layout de borda é representado pelos pontos cardeais da seguinte maneira. 22
Criando as coordenadas para o Formulário. add() Associaumobjetoaumoutronocaso um Painel. Sinatxe add(<coord>,<objeto>); ou <objeto>.add(<objeto>); 23
Criando os Objetos em um formulário (Instanciando os Componentes) 24
Exemplo Prático da utilização de um objeto. Label() Panel p1; Label rotulo1; p1=newpanel(); add("north",p1); rotulo1 = new Label("Olá Mundo"); p1.add(rotulo1); 25
Exemplo Prático da utilização de um objeto. Button() Panel p1; Button btn1; p1=newpanel(); add( South",p1); btn1=newbutton(" Ok "); p1.add(btn1); 26
Exemplo Prático da utilização de um objeto. TextField() Panel p1; TextField caixa1; p1=newpanel(); add( North",p1); caixa1 = new TextField(10); p1.add(caixa1); 27
Layout de Fluxo FlowLayout() Determina que os componentes sejam desenhados da parte superior esquerda para a direita até que seja atingido o limite horizontal do container. Construtor public FlowLayout(); public FlowLayout(int alin); public FlowLayout(int alin,int esph,espv); 28
Parâmetros FlowLayout() alin Alinhamento do compoente em relação a tela, FlowLayout.LEFT, FlowLayout.RIGTH, FlowLayout.CENTER esph Espaço horizontal entre os componentes. espv Espaço vertical entre os componentes. 29
Exemplo Construtor simples public TelaFlow() { setlayout(new FlowLayout()); Button btn1 = new Button("Gravar"); Button btn2 = new Button("Alterar"); Button btn3 = new Button("Pesquisa"); add(btn1); add(btn2); add(btn3); show(); } 30
Exemplo Construtor de parâmetros public TelaFlow() { setlayout(new FlowLayout(FlowLayout.CENTER,40,10)); Button btn1 = new Button("Gravar"); Button btn2 = new Button("Alterar"); Button btn3 = new Button("Pesquisa"); add(btn1); add(btn2); add(btn3); show(); } 31
Layout de grade -GridLayout() Disposição dos componentes em colunas e linhas. Todos os componentes possuem um único tamanho. Construtor new GridLayout(lin,col,esph,espv); 32
Parâmetros GridLayout(). Lin Número de linha do formulário. Col Número de colunas do formulário. esph Espaço horizontal. espv - Espaço vertical. 33
Exemplo GridLayout() public TelaFlow(){ setlayout(new GridLayout(3,2,8,5)); Button btn1 = new Button("Gravar"); Button btn2 = new Button("Alterar"); Button btn3 = new Button("Pesquisa"); 8 - Espaço } Button btn4 = new Button("Imprimir"); Button btn5 = new Button("Relatar"); Button btn6 = new Button("Gerador"); add(btn1); add(btn2); add(btn4); add(btn5); add(btn6); show(); 5 - Espaço 34
SetText()/getText() settext() Envia uma String para um objeto Botão, Rótulo ou caixa de texto. gettext() -captura dados de um objeto. Sintaxe <Objeto>.setText(<String>); Exemplo label1.settext("olá Mundo"); Strings=label1.getText(); 35
Criando botões agrupado (botões de radio). Classe CheckboxGroup(). Irá criar um agrupamento para os objetos que serão associados a CheckboxGroup(). Sintaxe CheckboxGroup <objeto>; Exemplo CheckboxGroup grupo; grupo = new CheckboxGroup(); 36
Checkbox() Criar objetos botões de radio para escolha do usuário. Sintaxe Checkbox <Objeto>; <objeto> = new Checkbox(<String>,[<grupo>],<boolean>); Onde <String>-vemaserastringquevaiapareceescritanoformulário. <grupo>- variável instanciada pela classe CheckBoxGroup. <boolean>- operador booleano true/false onde deverá que apareça a bolinha de indicação de escolha. 37
Exemplo Botões de Rádio Exemplo grupo = new CheckboxGroup(); c1 = new Checkbox("Masculino",grupo,false); c2 = new Checkbox("Feminino",grupo,true); tela3=newpanel(); add("north",tela3); tela3.add(c1); tela3.add(c2); 38
Para cria caixa de verificação basta tirar o objeto da classe CheckboxGroup() Exemplo c1 = new Checkbox("Pokemons",false); c2 = new Checkbox("Poderosas",false); tela3=newpanel(); add("north",tela3); tela3.add(c1); tela3.add(c2); 39
Capturando dados de um CheckboxGroup(). (Botão de Rádio) Usamos os métodos getcurrent()- Retorna o objeto que foi selecionado. getlabel() - Retorna com o rótulo da opção selecionada no Checkbox. Sintaxe <VarString> = <grupo>.getcurrent().getlabel(); Exemplo String opcao = grupo.getcurrent().getlabel(); 40
Capturando dados de um Checkbox(). (Caixa de Verificação) Usamosométodo getstate()- Retona um booleando true/false, true se tiver selecionado efalsocasonãoesteja. Sintaxe <boolean> = <objeto>.getstate(); Exemplo boolaen teste = c1.getstate(); 41
Choice() -Classe Choice cria uma caixa de combinação(combobox). Sintaxe Choice <Objeto>; <Objeto> new Choice(); additem()- Adiciona itens em uma caixa de combinação ou Lista. Sintaxe <Objeto>.addItem(<String>); 42
Exemplo Criação de uma caixa de combinação contendo itens. Choice combo1; combo1=newchoice(); combo1.additem("jose"); combo1.additem("paula"); combo1.additem("fernanda"); tela3=newpanel(); add("north",tela3); tela3.add(combo1); 43
List() -A classe List cria um objeto de caixa de lista. Sintaxe List <Objeto>; <Objeto> = new List(<ExpN>,<Boolean>); Onde <ExpN>- Número inteiro que representa quantas linhas serão mostradas pela caixa de lista. <Boolean>-true/falsequeindiqueseacaixadelistapoderáou não selecionar mais de um item. 44
Exemplo List() Exemplo lista1 = new List(3,false); lista1.additem("jose"); lista1.additem("paula"); lista1.additem("fernanda"); lista1.additem("marta"); lista1.additem("solange"); tela3=newpanel(); add("north",tela3); tela3.add(lista1); 45
Capturando dados de uma caixa de lista ou combinação. (getselecteditem()) Sintaxe <VarString> = <Objeto>.getSelectedItem(); Exemplo String opcao = lista1.getselecteditem(); ObsRetornaparaavariávelopçãocomoitemselecionadonacaixade lista. 46
select(<indice>) Seleciona automaticamente um elemento da lista. Sintaxe <VarInt> = caixadelista.select(<num>); Exemplo int x = lista1.select(0); 47
getselectedindex() Retorna com o numero do índice selecionado na lista. Obs Caso nenhum item seja selecionado por um usuário o valor retornado será -1. Sintaxe <VarInt> = caixadelista.getselectedindex(); Exemplo int x = lista1.getselectedindex(); 48
getitemcount() Retorna o numero de itens da lista. Sintaxe <VarInt> = caixadelista. getitemcount(); Exemplo int y = lista1. getitemcount(); 49
getitem(<indice>) Captura o elemento baseado no índice anteriormente selecionado na lista. Sintaxe <VarString> = caixadelista.getitem(<indice>); Exemplo int k = lista1.getselectedindex(); String dado = lista1.getitem(k); 50
remove() Apaga um elemento da lista apontado pelo índice selecionado. Sintaxe Caixadelista.remove(<Indice>); Caixadelista.removeAll(); - Remove todos os elementos da lista. Exemplo int k = lista1.getselectedindex(); lista.remove(k); 51
Métodos de controle do formulário. SetTitle() Define o título do formulário na linha de Título. Sintaxe SetTitle(<String>); Exemplo SetTitle("Awt-Java"); 52
reshape() Especifica as coordenadas do tamanho do formulário. Sintaxe reshape(x1,y1,x2,y2); ou size(x1,y1); Onde x1,y1- São as coordenadas superiores. x2,y1- São as coordenadas inferiores.(são dadas em Pixels) Exemplo reshape( 100,100,200,200); 53
Exemplo da referencia das coordenadas do formulário. 54
setresizable() -Ativa ou desativa a propriedade de restaurar o formulário.(true/false) Sintaxe setresizable(<boolean>); Exemplo setresizable(false); 55
setenabled() -Habilita ou desabilita um determinado objeto. (true/false) Sintaxe <Objeto>.setEnabled(<Boolean>); 56
Exemplo Método setenabled() Exemplo tela2=newpanel(); b1=newbutton("ok"); add("south",tela2); tela2.add(b1); b1.setenabled(false); 57
Classes para controle de cores e fontes. Color() - Para se setar a palheta de cores para um objeto é preciso criar um objeto de cores com a classe Color() que trabalha no padrão RGB. Sintaxe(Instancia) Color cor = new Color(R,G,B); 58
Demonstração da Tabela RGB abaixo. 59
Métodos que ligam a paleta de cores. setbackground()-ativaacornofundodo objeto. setforeground()- Ativa a cor na borda (letra) do objeto. Sintaxe <Objeto>.setBackground(<Objeto-cor>); ou <Objeto>.setForeground(<Objeto-cor>); 60
Exemplo setbackground() tela1=newpanel(); Label label1 = new Label("Testando Cor"); add("north",tela1); tela1.add(label1); Color corlabel = new Color(255,0,0); label1.setbackground(corlabel); 61
Exemplo setforeground() Exemplo setforeground() tela1=newpanel(); Label label1 = new Label("Testando Cor"); add("north",tela1); tela1.add(label1); Color corlabel = new Color(255,0,0); label1. setforeground(corlabel); 62
Font()-Criando Fonte com a classe Fonte. Sinatxe Font <Objeto> = new Font(<Letra>,<Estilo>,<Tamanho>); setfont()-para aplicar a fonte desejada para um objeto é necessário usar o método setfont(); 63
Exemplo Método setfont() tela1=newpanel(); Label label1 = new Label("Testando Cor"); add("north",tela1); tela1.add(label1); Font fonte = new Font("Times New Romam",Font.ITALIC,12); label1.setfont(fonte); 64
Resultado do Método setfont() 65
Trabalhando com Evento Básicos. Para se tratar com eventos em Java usa-se dois métodos principais. (boolean) action e handleevent() action() Sintaxe do Método public boolean action(event evt, Object ob){ <Código> return true; handleevent() Sintaxe do Método } public boolean handleevent (Event evt) { <Código> return true; } 66
Exemplo Método action() Exemplo Método action() public boolean action(event evt, Object ob) { if("sair".equals(ob)) System.exit(0); return true; } 67
Exemplo do Método handleevent () Exemplo Método handleevent() public boolean handleevent(event evt) { switch(evt.id) { case Event.ACTION_EVENT if("sair".equals(evt.arg)) System.exit(0); if("ok".equals(evt.arg)) text1.setenabled(true); return true; case Event.WINDOW_DESTROY System.exit(0); return true; } } return true; 68
public boolean action(event evt,object arg) { if("mostra".equals(arg)) rotulo.settext("ola Turma"); if("sair".equals(arg)) System.exit(0); return true; } public static void main(string args[]) { newmatl(); } } 69
Programa Exemplo import java.lang.*; import java.awt.*; public class matl extends Frame{ Panel tela; Panel pbotao; Label rotulo; Button b1; Font f1; public matl() { setlayout(new BorderLayout()); tela=newpanel(); rotulo=newlabel(); add("center",tela); rotulo.settext("ola Mundo"); tela.add(rotulo); // Cria Botao pbotao = new Panel(); add("south",pbotao); b1 = new Button("Mostra"); pbotao.add(b1); Button b2 = new Button("Sair"); pbotao.add(b2); f1 = new Font("Time New Roman",Font.ITALIC,12); // Tamanho da fonte e tipo rotulo.setfont(f1); Color cor = new Color(214,205,194); setbackground(cor); reshape(10,10,200,200); // Tamanho da tela. show(); // Exibe Formulario na tela. } 70
import java.awt.event.*; Usando o manipulador de eventos para tratamento dos objetos botão, é necessário importar o pacote event dentro de awt. 71
addwindowlistener Adiciona uma o nome da classe que irá manipular evento da janela. Exemplo addwindowlistener(new Terminator()); Terminal seria o nome da classe que manipula os eventos. 72
addwindowlistener Classe de Construção dos Componentes addwindowlistener Classe de Tratamento de Eventos 73
Exemplo public Eventos(){ // Construtor setlayout(new BorderLayout()); addwindowlistener(new Terminator()); } 74
Relação da classe controladora de eventos Terminator WindowAdapter + windowclosing(windowevent e) Observação A classe Terminator será herança da classe WindowAdapter. 75
Herança da classe WindowAdapter class Terminator extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); } } Fecha a janela ao selecionar o botão fechar da janela ativa. 76
Selecionando um objeto addactionlistener Cria uma classe para realizar um evento para um determinado objeto associado a classe. Exemplo button1.addactionlistener(new TrataEv()); 77