Professor Sérgio Furgeri



Documentos relacionados
Tratamento de Eventos

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

Programação Gráfica em Java.

Curso de Aprendizado Industrial Desenvolvedor WEB

Sistema de Recursos Humanos

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

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

Aplicações Gráficas com AWT

Roteiro para criação de Applet

Desenvolvendo aplicações

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

Módulo 7. Interface Gráfica com o Usuário GUI - Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Especialização em Engenharia de Software - CEUT

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

MANUAL DE NAVEGAÇÃO DO MILLENNIUM BUSINESS

Display de Cristal Líquido

Técnicas de Programação II

Procedimentos para Reinstalação do Sisloc

Programação Orientada a Objetos II

Criação de Applets Package: Class Name Base Class: Generate header comments: Can run standalone: Generate Standard methods:

Criação de Applets com o JBuilder Professor Sérgio Furgeri

INTRODUÇÃO À TECNOLOGIA SERVLETS

ROTINAS PADRÕES DO SISTEMAS

MÓDULO 4 SWING Parte 3

Logo abaixo temos a Barra de Menus que é onde podemos acessar todos os recursos do PHP Editor.

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

MANUAL DO PVP SUMÁRIO

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Modo Estrutura é o ambiente de definição e estruturação dos campos, tipos de dados, descrição e propriedades do campo.

Serviço Técnico de Informática. Curso Básico de PowerPoint

INTRODUÇÃO AO WINDOWS

Manual do Spectacle. Boudhayan Gupta Boudhayan Gupta Tradução: André Marcelo Alvarenga

USANDO O ROUNDCUBE WEBMAIL

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

Java com Banco de Dados Posgree

Procedimentos para Instalação do Sisloc

Manual de operação. BS Ponto Versão 5.1

1) Verifique se o Microsoft.Net Framework 3.5 está instalado, para isto, abrir o Painel de Controle e verificar:

Instalação e Configuração RPM Remote Print Manager para Windows 2000

Programação Orientada a Objetos (DPADF 0063)

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

Manual Módulo Livro Caixa Livro Caixa Atualizada com a versão 1.3.0

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Scriptlets e Formulários

INSTALANDO SOFTWARE Ifox irestaurantes

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

MANUAL PORTAL CLIENTE AVANÇO

Sistema de Controle de Cheques GOLD

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Desenvolvimento de Aplicações Desktop

1 Criando um aplicativo visual em Java

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

APOSTILA WORD BÁSICO

MANUAL EXPORTAÇÃO IMPORTAÇÃO

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Programação Visual em Java

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Manual Captura S_Line

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Interfaces Gráficas: Interações Complexas

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

SEI - Procedimento para configurações e testes da instalação e uso de Token/Certificado Digital

PROCEDIMENTOS PARA A INSTALAÇÃO E UTILIZAÇÃO DO APLICATIVO DE LEILÃO ELETRÔNICO DA CONAB

COMO INSTALAR O CATÁLOGO

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

Manual de Utilização COPAMAIL Criando e configurando a assinatura de . Zimbra Versão 8.0.2

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

O Microsoft Office é composto por diversos softwares, dentre eles o Word, o Excel, o Access e o Power Point.

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

Sistema de Instalação e Criação da Estrutura do Banco de Dados MANUAL DO INSTALADOR. Julho/2007. Ministério da saúde

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

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

Versão PIMACO AUTOADESIVOS LTDA. Assistente Pimaco Ajuda ao Usuário

SIMULADO Windows 7 Parte V

Para que seja instalado o Bematef Total, é necessário que o computador onde seja efetuada a instalação

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Tutorial do administrador do HelpCenterLive (Sistema de Ajuda)

Dicas para usar melhor o Word 2007

UNIVERSIDADE TECNOLOGIA FEDERAL DO PARANÁ. Owncloud SERVIÇO DE COMPARTILHAMENTO EM NUVEM. Manual

TUTORIAL DO EMBRAPEC

Manual de Instalação. SafeSign Standard (Para MAC OS 10.7)

O WINDOWS 98 é um sistema operacional gráfico, multitarefa, produzido pela Microsoft.

MANUAL DO ANIMAIL Terti Software

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

Manual de Instalação do Agente Citsmart

{ System.exit(0); Exemplo (WindowAdapter) import java.awt.*; import java.awt.event.*;

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

EXEMPLO DE COMO FAZER UMA MALA DIRETA

COMO GERAR UM ARQUIVO NÃO IDENTIFICADO NO TABWIN

Transcrição:

Professor Sérgio Furgeri IPEP 2001

Indice Analítico 1.0. Componentes do Pacote AWT e criação de Applets... 01 1.1. Ciclo de vida de uma Applet...01 1.2. Uso de Botões... 03 1.3. Uso do campo texto... 04 1.4. Uso de Caixas de Entrada e de Diálogo... 05 1.5. Controlando o Acesso através de senhas... 07 1.6. Uso de Botões Tipo CheckBox... 08 1.7. Uso de Botões de Rádio... 09 1.8. Uso de Listas Tipo Combo...11 1.9. Uso de Listas Tipo ListBox...13 1.10. Uso da Barra de Rolagem... 15 1.11. Uso do Text Area...16 1.12. Geração de Menus... 18 2.0. Controle de Eventos e Manipulação de Arquivo Texto...26 2.1. Controle de eventos... 26 2.2. Manipulação de arquivos Texto através de aplicações...30 2.3. Manipulação de arquivos Texto através de Applets...37 2.3.1 Restrições das Applets... 39 2.3.2 Criação do Policy File... 39 2.4. Manipulação de arquivos Texto através do Browser... 41 3.0. Passagem de Parâmetros e Aplicações Cliente Servidor... 43 3.1. Passagem de parâmetros para Applets... 43 3.2. Utilização de Servlets... 45 3.2.1. A criação da aplicação Cliente... 46 3.2.2. A criação da aplicação Servidora... 47 3.2.3. A configuração do JavaWebServer 2.0... 48 3.2.4. Realização da comunicação... 52 3.2.5. Criação de uma Applet Cliente... 54 4.0. Acesso a Banco de Dados através de Aplicações... 55 4.1. A criação do banco de dados... 55 4.2. A Configuração do sistema... 56 4.3. A criação da aplicação em Java...58 4.3.1. A conexão com o banco de dados...58 4.3.2. A leitura do banco de dados com o SQL... 58 4.3.3. Criação de consultas com tabelas...62

5.0. Uso da Classe Table e Manutenção em Banco de Dados...66 5.1. Verificação do conteúdo das células da tabela... 66 5.2. Posicionamento da seleção da tabela...68 5.3. Uso do objeto Combo dentro da tabela...71 5.4. Uso do objeto CheckBox dentro da tabela... 73 5.5. Uma aplicação completa para manutenção em tabelas... 76 Anexo A: Utilização do HTML Converter... 83

Componentes do Pacote AWT e criação de Applets Essa aula aborda o nível intermediário da linguagem Java através da utilização de classes já disponíveis, apropriadas para a criação de aplicações gráficas (conhecidas como pacote awt ABSTRACT WINDOW TOOLKIT). Ao desenvolver uma aplicação gráfica é necessário definir quais componentes serão utilizados e qual a disposição que eles terão na janela. O pacote de classes da AWT, possui diversos componentes utilizados para a criação de Janelas (Frames). Serão abordados os componentes mais utilizados. 1.1. Ciclo de vida de uma Applet Uma Applet possui diversos estágios durante seu período de processamento. A união desses períodos é chamada de Ciclo de vida de uma Applet. O ciclo de vida é composto por 6 fases: 1 Instanciação: Ocorre no momento que a Applet é criada. Ex. public class Applet01 extends Applet 2 Inicialização: é o método invocado após a criação da Applet, utilizado pelos navegadores para iniciar a execução da Applet. Geralmente é o método utilizado para a adição dos componentes da AWT para a criação dos Frames. Esse método é executado apenas uma vez, quando a applet é inicializada. Nome do método: public void init() 3 Inicio: esse método é chamado toda vez que a Applet se torna visível na tela do browser. Nome do método: public void start() 4 Parada: esse método é chamado toda vez que a Applet se torna invisível. Nome do método: public void stop() 5 Execução: esse método é chamado toda vez que a Applet necessita atualizar sua exibição na tela (janela redimensionada, minimizada...). Nome do método: public void paint() 6 Finalização: esse método é chamado quando a Applet está sendo descarregada da página para que seja realizada a liberação final de todos os recursos utilizados durante sua execução. Nome do método: public void destroy() O exemplo seguinte demonstra o funcionamento do ciclo de vida completo de uma Applet. Para que sua funcionalidade seja observada corretamente, o applet deve ser execuado através do Appletviewer presente no kit de desenvolvimento da Sun. Sendo assim, depois de compilado e criado o arquivo HTML, digite: appletviewer ex00.html import java.applet.applet; import java.awt.graphics; import java.awt.color; Manipulação do pacote AWT através do uso de Applets - Página 1

public class ex00 extends Applet String text = "Estudo da Applet"; int cont = 0; public void init() text = "Estudo da Applet..."; setbackground(color.cyan); Curso de Java - Professor Sérgio Furgeri public void start() System.out.println("Iniciando..."); public void stop() System.out.println("Parando..."); public void destroy() System.out.println("Preparando para descarregar..."); public void paint(graphics g) text = "Atualizou "+cont++; g.setcolor(color.blue); g.drawrect(0, 0, getsize().width -1, getsize().height -1); g.setcolor(color.red); g.drawstring(text, 15, 25); Exemplo do ciclo de vida da Applet <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Estudo do ciclo de vida da Applet<BR><BR> <applet code="ex00.class" width=250 height=180> </applet> </html> Arquivo ex00.html Manipulação do pacote AWT através do uso de Applets - Página 2

Figura 1.1 A classe ex00 sendo executada 1.2. Uso de Botões O exemplo seguinte mostra como utilizar um botão em uma Applet, reconhecendo o click do usuário. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex01 extends Applet implements ActionListener Button b1 = new Button("OK"); public void init() b1.addactionlistener(this); add(b1); public void actionperformed(actionevent e) // metodo implementado pelo ActionListener System.out.println("Botao pressionado"); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso do Botão<BR><BR> <applet code="ex01.class" width=340 height=80> </applet> </html> Exemplo 1 Uso do Componente Button Manipulação do pacote AWT através do uso de Applets - Página 3

Figura 1.2 A classe ex01 sendo executada 1.3. Uso do campo texto O exemplo seguinte mostra como utilizar uma caixa de texto em uma Applet, trocando caracteres no caso da digitação de uma senha. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex02 extends Applet implements ActionListener TextField t1 = new TextField(10); TextField t2 = new TextField(10); Button b1 = new Button("Entrar"); public void init() b1.addactionlistener(this); t1.setechochar('*'); add(b1); add(t1); add(t2); public void actionperformed(actionevent e) t2.settext(t1.gettext()); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso do TextField<BR><BR> Manipulação do pacote AWT através do uso de Applets - Página 4

<applet code="ex02.class" width=340 height=80> </applet> </html> Exemplo 2 Uso do Componente TextField Figura 1.3 A classe ex02 sendo executada 1.4. Uso de Caixas de Entrada e de Diálogo O exemplo seguinte mostra como utilizar uma caixa de entrada para receber o nome de um usuário. Após receber o nome, a Applet verifica se o usuário é reconhecido e envia uma mensagem através de uma caixa de diálogo. Obs. Essa Applet não roda originalmente no I.E, sendo necessário utilizar o Appletviewer. Para tal, consulte o anexo A. import java.awt.*; import java.awt.event.*; import java.applet.applet; import javax.swing.joptionpane; //Entrada de dados com JOptionPane //Não funciona no IE public class ex03 extends Applet implements ActionListener TextField t1 = new TextField(20); String Men=""; public void init() Button b1 = new Button("Entrar"); b1.addactionlistener(this); // t1.seteditable(false); add(t1); Manipulação do pacote AWT através do uso de Applets - Página 5

Curso de Java - Professor Sérgio Furgeri add(b1); Men = ""; while (Men.equals("")) Men = JOptionPane.showInputDialog("Entre com seu nome"); if (Men==null) break; //Quando é pressionado o botão cancel, Men recebe null t1.settext(men); public void actionperformed(actionevent e) if (!t1.gettext().equals("ipep")) JOptionPane.showMessageDialog(null,"Usuario\n nao\n reconhecido!"); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso de caixas de mensagens<br><br> <applet code="ex03.class" width=340 height=80> </applet> </html> Exemplo 3 Uso da Caixa de Entrada e de Mensagem Figura 1.4 A classe ex03 sendo executada Manipulação do pacote AWT através do uso de Applets - Página 6

1.5. Controlando o Acesso através de senhas O exemplo seguinte mostra como controlar o acesso de um usuário em uma página por meio de senha. import java.net.*; import java.awt.*; import java.awt.event.*; import java.applet.applet; import java.applet.appletcontext; public class ex04 extends Applet implements ActionListener String Men=""; Label l1 = new Label("Senha: "); TextField t1 = new TextField(10); Button b1 = new Button("Entrar"); public void init() t1.setechochar('*'); b1.addactionlistener(this); add(l1);add(t1);add(b1); public void actionperformed(actionevent e) try if (t1.gettext().equals("ipep")) getappletcontext().showdocument(new URL ("http://planeta.terra.com.br/educa cao/profsergio/frame.html"),"_blank") ; else getappletcontext().showdocument(new URL ("http://planeta.terra.com.br/educa cao/profsergio/naousuario.html"),"_blank") ; catch(exception ex) getappletcontext().showstatus("erro ao carregar o URL") ; <html> <TITLE>Página do Professor Sérgio Furgeri</TITLE> O acesso a essa página é restrito!<br><br> <applet code="ex04.class" width=340 height=80> Manipulação do pacote AWT através do uso de Applets - Página 7

</applet> </html> Exemplo 4 Controlando o Acesso Figura 1.5 A classe ex04 sendo executada 1.6. Uso de Botões Tipo CheckBox O exemplo seguinte mostra como utilizar os botões do tipo CheckBox para controlar a formatação de um determinado texto de acordo com a escolha do usuário. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex05 extends Applet implements ItemListener Label l1; Checkbox c1,c2; public void init() setbackground(new Color(180,180,180)); setlayout(new FlowLayout(FlowLayout.CENTER)); l1 = new Label("Java"); l1.setfont(new Font("Arial",Font.PLAIN,20)); c1 = new Checkbox("Negrito",false); c2 = new Checkbox("Itálico",false); c1.additemlistener(this); c2.additemlistener(this); add(l1); add(c1); add(c2); public void itemstatechanged(itemevent e) int negrito=0,italico=0; Manipulação do pacote AWT através do uso de Applets - Página 8

if (c1.getstate()) negrito = Font.BOLD; //negrito=1 else negrito = Font.PLAIN; //negrito=0 if (c2.getstate()) italico = Font.ITALIC; //italico=2 else italico = Font.PLAIN; //italico=0 l1.setfont(new Font("Arial",negrito+italico,20)); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso de Botões tipo CheckBox<BR><BR> <applet code="ex05.class" width=340 height=80> </applet> </html> Exemplo 5 Uso de Botões Tipo CheckBox Figura 1.6 A classe ex05 sendo executada 1.7. Uso de Botões de Rádio O exemplo seguinte mostra como utilizar os Botões de Rádio para efetuar um cálculo de acordo com a escolha do usuário. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex06 extends Applet implements ItemListener Label L1,L2; float N1=0,result=0; TextField T1, T2; Panel P1,P2; Checkbox radio1, radio2, radio3; CheckboxGroup radiogroup; Manipulação do pacote AWT através do uso de Applets - Página 9

public void init() setlayout(new FlowLayout(FlowLayout.CENTER)); setbackground(new Color(230,230,230)); L1 = new Label("Digite um valor"); L2 = new Label("% do Valor :"); T1 = new TextField(5); T2 = new TextField(); P1 = new Panel(); P2 = new Panel(); T2.setEditable(false); radiogroup = new CheckboxGroup(); radio1 = new Checkbox("10% do valor",radiogroup,false); radio2 = new Checkbox("20% do valor",radiogroup,false); radio3 = new Checkbox("30% do valor",radiogroup,false); radio1.additemlistener(this); radio2.additemlistener(this); radio3.additemlistener(this); P1.setLayout(new FlowLayout(FlowLayout.CENTER)); P1.setBackground(new Color(200,200,200)); P2.setLayout(new GridLayout(2,3,5,10)); P2.setBackground(new Color(190,190,190)); P1.add(L1); P1.add(T1); P2.add(radio1); P2.add(radio2); P2.add(radio3); P2.add(L2); P2.add(T2); add(p1); add(p2); public void itemstatechanged(itemevent e) if (T1.getText().length()==0) return; try N1 = Float.valueOf(T1.getText()).floatValue(); if (radio1.getstate()) result = (N1 * 10)/100; if (radio2.getstate()) result = (N1 * 20)/100; if(radio3.getstate()) result = (N1 * 30)/100; catch(numberformatexception erro) T2.setText("Erro"); return; T2.setText(""+result); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso de Botões de Rádio<BR><BR> <applet code="ex06.class" width=400 height=120> </applet> </html> Manipulação do pacote AWT através do uso de Applets - Página 10

Exemplo 6 Uso de Botões de Rádio Figura 1.7 A classe ex06 sendo executada 1.8. Uso de Listas Tipo Combo O exemplo seguinte mostra como utilizar as Listas Tipo Combo (ComboBox), onde será mostrado como adicionar, remover, selecionar e mostrar a quantidade de itens import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex07 extends Applet implements ActionListener Label l1; TextField t1,t2,t3; Choice combo; Button b1,b2,b3,b4,b5,b6,b7,b8; public void init() setbackground(new Color(0,128,128)); l1 = new Label("Conteudo"); l1.setbackground(systemcolor.control); l1.setfont(new Font("Symbol", Font.BOLD, 25)); b1 = new Button("Mostra Texto"); b1.addactionlistener(this); b2 = new Button("Mostra Indice"); b2.addactionlistener(this); Manipulação do pacote AWT através do uso de Applets - Página 11

b3 = new Button("Adiciona Item"); b3.addactionlistener(this); b4 = new Button("Remove Item"); b4.addactionlistener(this); b5 = new Button("Remove Todos"); b5.addactionlistener(this); b6 = new Button("Seleciona Indice"); b6.addactionlistener(this); b7 = new Button("Quant. Itens"); b7.addactionlistener(this); t1 = new TextField(); t2 = new TextField(); t3 = new TextField(); combo = new Choice(); combo.add("branco"); combo.add("vermelho"); combo.add("azul"); combo.add("verde"); // combo.additemlistener(this); setlayout (new GridLayout(6,2)); add(l1);add(combo); add(b1);add(b2); add(b3);add(t1); add(b4);add(b5); add(b6);add(t2); add(b7);add(t3); public void actionperformed(actionevent e) if (e.getsource()==b1) l1.settext("texto: "+combo.getselecteditem()); if (e.getsource()==b2) l1.settext("indice: "+combo.getselectedindex()); if (e.getsource()==b3) if (t1.gettext().length()!=0) combo.add(t1.gettext()); t1.settext(""); if (e.getsource()==b4) combo.remove(combo.getselectedindex()); if (e.getsource()==b5) combo.removeall(); if (e.getsource()==b6) combo.select(integer.parseint(t2.gettext())); if (e.getsource()==b7) t3.settext(""+combo.getitemcount()); /* Esse método é executado toda vez que a opção do combo é alterada Exige que seja utilizado implements ItemListener no topo da classe public void itemstatechanged(itemevent e) */ Manipulação do pacote AWT através do uso de Applets - Página 12

<html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso de Listas tipo Combo<BR><BR> <applet code="ex07.class" width=400 height=180> </applet> </html> Exemplo 7 Uso de Listas Tipo Combo Figura 1.8 A classe ex07 sendo executada 1.9. Uso de Listas Tipo ListBox O exemplo seguinte mostra como utilizar as Listas do Tipo ListBox import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex08 extends Applet implements ActionListener, ItemListener // Manipulador de eventos Label l1; TextField t1; List lista; Button bclear, bquant; public void init() setbackground(new Color(0,128,128)); t1 = new TextField(20); t1.addactionlistener(this); Manipulação do pacote AWT através do uso de Applets - Página 13

l1 = new Label("Sem selecao"); l1.setbackground(systemcolor.control); bclear = new Button("Limpa"); bclear.addactionlistener(this); bquant = new Button("Itens "); bquant.addactionlistener(this); lista = new List(6); lista.addactionlistener(this); lista.additemlistener(this); add(l1, BorderLayout.NORTH); //topo do frame add(lista, BorderLayout.CENTER); //centro do frame add(t1, BorderLayout.SOUTH); //botton do frame add(bclear, BorderLayout.EAST); //direita do frame add(bquant, BorderLayout.WEST); //esquerda do frame public void actionperformed(actionevent e) if (e.getsource()==t1) lista.add(t1.gettext()); //adiciona itens a lista t1.settext(""); else if (e.getsource()==lista) //ativa quando duplo click t1.settext("removido :"+lista.getselecteditem()); //Item-retorna o texto lista.remove(lista.getselectedindex()); //Index-retorna o indice selecionado l1.settext("sem selecao"); //o primeiro o incice 0 else if (e.getsource()==bclear) l1.settext("sem selecao"); t1.settext(""); lista.removeall(); else if (e.getsource()==bquant) t1.settext("quantidade: "+lista.getitemcount()); public void itemstatechanged(itemevent e) if (e.getsource()==lista) if(lista.getselectedindex()>-1) l1.settext(""+lista.getselecteditem()); else l1.settext("sem selecao"); Manipulação do pacote AWT através do uso de Applets - Página 14

<html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso de Listas tipo ListBox<BR><BR> <applet code="ex08.class" width=150 height=180> </applet> </html> Exemplo 8 Uso de Listas Tipo ListBox Figura 1.9 A classe ex08 sendo executada 1.10. Uso da Barra de Rolagem O exemplo seguinte mostra como utilizar uma Barra de Rolagem. Nesse exemplo, na medida em que o usuário movimenta a barra, seu valor correspondente é inserido no campo texto. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex09 extends Applet Scrollbar sb; TextField t1; public void init() Manipulação do pacote AWT através do uso de Applets - Página 15

sb = new Scrollbar(Scrollbar.HORIZONTAL,0,5,-100,105); t1 = new TextField(5); // initial value is 0 // 5 width of slider // range -100 to 100 add(sb);add(t1); public boolean handleevent (Event e) if (e.target instanceof Scrollbar) t1.settext(""+sb.getvalue()); return(true); return(false); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso da barra de rolagem<br><br> <applet code="ex09.class" width=340 height=50> </applet> </html> Exemplo 9 Uso da Barra de Rolagem Figura 1.10 A classe ex09 sendo executada 1.11. Uso do Text Area O exemplo seguinte utiliza um TextArea onde são demonstrados os principais procedimentos necessários a manipulação desse componente, tais como: a inserção de texto, a leitura linha a linha de seu conteúdo, a cópia do texto selecionado, etc. Manipulação do pacote AWT através do uso de Applets - Página 16

import java.awt.*; import java.awt.event.*; import java.applet.applet; Curso de Java - Professor Sérgio Furgeri public class ex10 extends Applet implements ActionListener TextArea ta1,ta2; TextField t1; Button b1,b2; public void init() t1 = new TextField(30); t1.addactionlistener(this); b1 = new Button("Mostra Linhas"); b1.addactionlistener(this); b2 = new Button("Copia Selecao"); b2.addactionlistener(this); ta1 = new TextArea("Editor de texto:\n",5,40); ta2 = new TextArea(5,40); add(ta1);add(t1);add(b1);add(b2);add(ta2); public void actionperformed(actionevent e) if (e.getsource()==t1) // para inserir no final do texto: // ta1.append(t1.gettext()); ta1.settext(ta1.gettext()+t1.gettext()+"\n"); t1.settext(""); return; if (e.getsource()==b1) String s = ta1.gettext(); // Para descobrir quando muda de linha deve ser usado // if (s.charat(i)=='\n') for (int i=0;i<=s.length()-1;i++) System.out.print(s.charAt(i)); if (e.getsource()==b2) ta2.settext(ta1.getselectedtext()); /* Sinais de Escape: \b retrocesso \n novalinha Manipulação do pacote AWT através do uso de Applets - Página 17

\t tabulação \r retorno do carro \f avanço do formulário \\ barra invertida \' apóstrofo \" aspas */ Curso de Java - Professor Sérgio Furgeri <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uso do TextArea<BR><BR> <applet code="ex10.class" width=280 height=260> </applet> </html> Exemplo 10 Uso do TextArea Figura 1.11 A classe ex10 sendo executada 1.12. Geração de Menus A maneira mais simples de utilizar um menu é através da construção de aplicações. Para que um menu seja executado por uma Applet é necessário utilizar-se as classes do pacote swing (Java 2). A seguir serão demonstrados diversos exemplos usando menus, em aplicações e em Applets. O primeiro exemplo mostra um simples menu sendo inserido em uma Manipulação do pacote AWT através do uso de Applets - Página 18

aplicação. Através desse exemplo é possível verificar como criar um menu e abrir uma nova janela (Frame) a partir dele. É demonstrado também como realizar o fechamento dessa nova janela criada, através da inserção de duas classes em um só arquivo. Um arquivo em java pode conter diversas classes, entretanto apenas uma pode ser declarada como public. import java.awt.*; import java.awt.event.*; public class Menudemo extends Frame implements ActionListener MenuBar m1; Menu MenuArquivo; MenuItem minovo,miabrir,misair; public static void main(string args[]) Menudemo Janela=new Menudemo(); Janela.addWindowListener (new fechajanela()); Janela.show(); public Menudemo() settitle("uso de Menus"); setsize(250,150); setlocation(50,50); setbackground(new Color(0,128,128)); m1 = new MenuBar(); MenuArquivo = new Menu("Arquivo"); minovo = new MenuItem ("Novo"); minovo.addactionlistener(this); miabrir = new MenuItem ("Abrir"); miabrir.addactionlistener(this); misair = new MenuItem ("Sair"); misair.addactionlistener(this); MenuArquivo.add(miNovo); MenuArquivo.add(miAbrir); MenuArquivo.add(miSair); m1.add(menuarquivo); setmenubar(m1); public void actionperformed(actionevent e) if (e.getsource()==minovo) System.out.println("Novo"); FechaFrame f = new FechaFrame(); f.setsize(200,100); f.setbackground(color.blue); f.show(); Manipulação do pacote AWT através do uso de Applets - Página 19

if (e.getsource()==miabrir) System.out.println("Abrir"); if (e.getsource()==misair) System.out.println("Sair"); System.exit(0); class FechaFrame extends Frame public boolean handleevent (Event evt) if (evt.id == Event.WINDOW_DESTROY) dispose(); return super.handleevent(evt); Exemplo 11 Uso de Menus Figura 1.12 A classe ex11 sendo executada O próximo exemplo demonstra uma aplicação que utiliza submenus e teclas de atalho. Esse exemplo será usado pelo próximo exemplo, uma applet que chama essa aplicação. Um ponto importante nesse exemplo é código do botão sair: try System.exit(0); catch(exception ex) dispose(); Esse trecho tenta encerrar a aplicação, caso ocorra um erro, no caso dela estar sendo executada por uma Applet, é chamado o método dispose(). import java.awt.*; import java.awt.event.*; public class ex12 extends Frame implements ActionListener MenuBar m1; Menu MenuArquivo, MenuSave; MenuItem minovo,miabrir,misair,misalvar,misalvarc,misalvart; Manipulação do pacote AWT através do uso de Applets - Página 20

public static void main(string args[]) ex12 Janela=new ex12(); Janela.addWindowListener (new fechajanela()); Janela.show(); public ex12() settitle("uso de Menus"); setsize(250,100); setlocation(50,50); setbackground(new Color(0,128,128)); m1 = new MenuBar(); MenuArquivo = new Menu("Arquivo"); // MenuArquivo.setMnemonic( 'A' ); SOMENTE NO SWING MenuArquivo.addActionListener(this); MenuSave = new Menu("Save"); minovo = new MenuItem ("Novo"); minovo.addactionlistener(this); minovo.setshortcut(new MenuShortcut(KeyEvent.VK_N)); miabrir = new MenuItem ("Abrir"); miabrir.addactionlistener(this); miabrir.setshortcut(new MenuShortcut(KeyEvent.VK_A)); misair = new MenuItem ("Sair"); misair.addactionlistener(this); misair.setshortcut(new MenuShortcut(KeyEvent.VK_X)); misalvar = new MenuItem ("Salvar"); misalvar.addactionlistener(this); misalvar.setshortcut(new MenuShortcut(KeyEvent.VK_S)); misalvarc = new MenuItem ("Salvar Como"); misalvarc.setshortcut(new MenuShortcut(KeyEvent.VK_C)); misalvarc.addactionlistener(this); misalvart = new MenuItem ("Salvar Tudo"); misalvart.addactionlistener(this); misalvart.setshortcut(new MenuShortcut(KeyEvent.VK_T)); MenuSave.add(miSalvar); MenuSave.add(miSalvarC); MenuSave.add(miSalvarT); MenuArquivo.add(miNovo); MenuArquivo.add(miAbrir); MenuArquivo.add(MenuSave); MenuArquivo.add(miSair); m1.add(menuarquivo); setmenubar(m1); public void actionperformed(actionevent e) if (e.getsource()==minovo) System.out.println("Novo"); Manipulação do pacote AWT através do uso de Applets - Página 21

FechaFrame f = new FechaFrame(); f.setsize(250,100); f.setlocation(70,70); f.settitle("nova Janela"); f.setbackground(color.gray); f.add(new Label("Janela 2",Label.CENTER)); f.show(); if (e.getsource()==miabrir) System.out.println("Abrir"); if (e.getsource()==misalvar) System.out.println("Salvar"); if (e.getsource()==misalvarc) System.out.println("Salvar Como"); if (e.getsource()==misalvart) System.out.println("Salvar Tudo"); if (e.getsource()==misair) System.out.println("Sair"); try System.exit(0); catch(exception ex) dispose(); class FechaFrame extends Frame public boolean handleevent (Event evt) if (evt.id == Event.WINDOW_DESTROY) dispose(); return super.handleevent(evt); Exemplo 12 Uso de com teclas de atalho Figura 1.13 A classe ex12 sendo executada O próximo exemplo demonstra uma applet que no momento em que é executada chama a aplicação do exemplo anterior. Essa applet pode ser carregada através do browser, conforme demonstra a figura seguinte. import java.awt.*; Manipulação do pacote AWT através do uso de Applets - Página 22

import java.awt.event.*; import java.applet.applet; public class ex13 extends Applet ex12 d; public void init() d = new ex12(); d.setsize(300,200); d.show(); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uma applet que chama uma aplicação<br><br> <applet code="ex13.class" width=280 height=260> </applet> </html> Exemplo 13 Carregamento de uma aplicação através de uma Applet Figura 1.14 A classe ex13 sendo executada O próximo exemplo demonstra uma applet criada com as classes do pacote Swing executada através do appletviewer. Para carregar a applet pelo browser, o Manipulação do pacote AWT através do uso de Applets - Página 23

arquivo html qie carrega a applet deve ser convertido com a ferramenta HTML Converter (Anexo A). import java.awt.*; import java.awt.event.*; import java.applet.applet; import javax.swing.*; public class ex14 extends JApplet implements ActionListener JMenuBar m1; JMenu MenuArquivo; JMenuItem minovo,miabrir; public void init() setbackground(new Color(0,128,128)); m1 = new JMenuBar(); MenuArquivo = new JMenu("Arquivo"); MenuArquivo.setMnemonic( 'A' ); MenuArquivo.addActionListener(this); minovo = new JMenuItem ("Novo"); minovo.addactionlistener(this); miabrir = new JMenuItem ("Abrir"); miabrir.addactionlistener(this); MenuArquivo.add(miNovo); MenuArquivo.add(miAbrir); m1.add(menuarquivo); setjmenubar(m1); public void actionperformed(actionevent e) if (e.getsource()==minovo) System.out.println("Novo"); FechaFrame f = new FechaFrame(); f.setsize(250,100); f.setlocation(70,70); f.settitle("nova Janela"); f.setbackground(color.gray); f.add(new Label("Janela 2",Label.CENTER)); f.show(); if (e.getsource()==miabrir) System.out.println("Abrir"); class FechaFrame extends Frame public boolean handleevent (Event evt) if (evt.id == Event.WINDOW_DESTROY) dispose(); Manipulação do pacote AWT através do uso de Applets - Página 24

return super.handleevent(evt); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uma applet usando as classes do pacote Swing<BR><BR> <applet code="ex14.class" width=280 height=260> </applet> </html> Exemplo 14 Uso de menus em Applets com as classes Swing Figura 1.15 A classe ex14 sendo executada no appletviewer Manipulação do pacote AWT através do uso de Applets - Página 25

Tópico 2: Controle de Eventos e Manipulação de Arquivo Texto Essa aula aborda os principais eventos controlados pela linguagem Java, gerados a partir de frames. Um exemplo típico desses procedimentos se refere ao controle do foco sobre um objeto. Quando o usuário pressionar a tecla Enter o controle de foco pode ser passado a outro objeto. Essa aula também aborda a identificação do teclado e a manipulação de arquivos texto através de aplicações, demonstrando o que é necessário para realizar a leitura e gravação de arquivos. Serão estudadas as técnicas mais utilizadas que envolvem o tratamento desses itens. 2.1. Controle de eventos Em uma aplicação é importante prever certas condições como: não permitir a digitação de texto em campos numéricos, possibilitar a mudança de foco quando a tecla Enter é pressionada. Existem várias características cuja importância depende do tipo de aplicação. Cada componente do pacote awt gera uma certa quantidade de eventos que podem ser tratados na aplicação. Para manipular os eventos de um componente, três aspectos são essenciais e devem ser utilizados em uma aplicação: A interface ou adaptador utilizada (Ex. ActionListener) O método (ou métodos) para controlar o evento (Ex. actionperformed) O tipo de evento em si (Ex. ActionEvent) O exemplo seguinte demonstra a utilização de vários eventos que são gerados através do mouse e do teclado. Para o mouse são demonstrados 4 eventos diferentes: quando o mouse entra e sai da área do botão, quando o mouse é pressionado e solto do botão. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ex15 extends Applet implements MouseListener, KeyListener, TextListener Button B1; Label L1; TextField T1,T2; static int E=2,T=2; public void init() setbackground(new Color(150,150,150)); setlayout(new GridLayout(4,1)); L1 = new Label(""); B1 = new Button ("Click"); T1 = new TextField(); T2 = new TextField(); B1.addMouseListener(this); T1.addKeyListener(this); Controle de Eventos e manipulação de Arquivo Texto - Página 26

T2.addTextListener(this); T2.addKeyListener(this); add(b1); add(l1); add(t1); add(t2); public void mousepressed(mouseevent e) L1.setText("O botão do Mouse foi pressionado"); public void mouseclicked(mouseevent e) L1.setText("O botão do Mouse foi solto"); public void mouseentered(mouseevent e) L1.setText("O ponteiro do Mouse entrou na área do botão"); public void mouseexited(mouseevent e) L1.setText("O ponteiro do Mouse saiu da área do botão"); public void mousereleased(mouseevent e) L1.setText("O botão do Mouse foi solto fora da área do botão"); // método acionado quando uma tecla é pressionada public void keypressed(keyevent e) if (e.getsource()==t1) if(e.getkeycode()==10 e.getkeycode()==9) e.setkeycode(9); return; if(e.getkeycode()<96 e.getkeycode()>105) e.setkeycode(8); return; if (e.getsource()==t2) if(e.getkeycode()==38) setlocation(e,t--); if(e.getkeycode()==40) setlocation(e,t++); if(e.getkeycode()==37) setlocation(e--,t); if(e.getkeycode()==39) setlocation(e++,t); // método acionado no momento em que a tecla é solta public void keyreleased(keyevent e) // método acionado no momento em que a tecla é pressionada public void keytyped(keyevent e) // método acionado quando o texto do campo é mudado public void textvaluechanged(textevent e) int n; try n = Integer.parseInt(T2.getText()); switch(n) case 0: L1.setText("Zero");break; Controle de Eventos e manipulação de Arquivo Texto - Página 27

case 1: L1.setText("Um");break; case 2: L1.setText("Dois");break; default: L1.setText("Não reconhecido");break; catch(numberformatexception erro) return; <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uma applet mostrando a manipulação de eventos<br><br> <applet code="ex15.class" width=280 height=100> </applet> </html> Exemplo 15 Controle de eventos Figura 2.1 A classe ex15 sendo executada Os aspectos mais importantes desse exemplo são: MouseListener, KeyListener e TextListener são as interfaces utilizadas para a manipulação dos eventos do mouse, do teclado e da mudança de conteúdo da caixa de texto. Cada uma dessas interfaces exige a declaração de métodos para realizar a manipulação dos eventos. A tabela a seguir demonstra as interfaces utilizadas e os métodos exigidos. Interface Métodos MouseListener mousepressed, mouseclicked, mouseentered, mouseexited e mousereleased KeyListener keypressed, keyreleased, keytyped Controle de Eventos e manipulação de Arquivo Texto - Página 28

TextListener TextValueChanged Linha static int L1=2,C=2 declaração das variáveis globais L e C para controle do posicionamento da janela em relação a tela. Linhas addmouselistener, addkeylistener, addtextlistener e addkeylistener adiciona os eventos relativos a cada objeto. Os métodos relativos a interface MouseListener alteram o conteúdo do Label L1 na medida em que os eventos do mouse sobre o botão são gerados. Os métodos relativos a interface KeyListener são invocados toda a vez que uma tecla é pressionada. O método textvaluechanged é invocado somente quando o conteúdo da caixa de texto (no caso T2) é alterado. Método keypressed esse método é acionado quando uma tecla é pressionada sobre as caixas de texto T1 e T2. Por isso, toda vez que o método é invocado torna-se necessário verificar qual objeto gerou o evento. Isso é verificado através das linhas if(e.getsource). Caso o objeto que gerou o evento seja o T1, ocorrerá o seguinte: Se for pressionado a tecla Enter ou a tecla Tab, será gerado o código da tecla Tab. Desta forma tanto faz ao usuário pressionar Enter (if (e.getkeycode==10)) ou Tab (if(e.getkeycode==9)) que o próximo objeto (no caso o T2) receberá o foco. Se for pressionado uma letra ou qualquer outra tecla diferente do teclado numérico (if(e.getkeycode() < 96 e.getkeycode() > 105)) será gerado o código da tecla BackSpace (e.setkeycode(8)) para cancelar a tecla pressionada. Dessa forma a caixa de texto T2 aceitará apenas a digitação de caracteres numéricos. Nesse exemplo as teclas numéricas localizadas abaixo das teclas de função não serão aceitas por possuirem códigos diferentes. Caso o objeto que gerou o evento seja o T2, ocorrerá o seguinte: Se for pressinada a tecla (if(e.getkeycode==38)) a distância da janela em relação ao topo da tela irá diminuir e a janela se movimentará para cima. Essa movimentação também é realizada pelo acionamento das teclas (40), (37) e (39), cada uma movimentando a janela no sentido correspondente. O método textvaluechanged é invocado quando o conteúdo do texto presente em T2 é alterado. Se o conteúdo de T2 estiver com 0, 1 ou 2, o valor correspondente em extenso será colocado no Label L1. Caso um outro valor for fornecido será executada a instrução default do switch. A tabela a seguir demonstra um resumo das interfaces, métodos e eventos usados nesse capítulo. A lista completa pode ser encontrada no site da Sun (http://java.sun.com). Interface Métodos obrigatórios Evento ActionListener actionperformed ActionEvent ItemListener itemstatechanged ItemEvent KeyListener keypressed KeyEvent Controle de Eventos e manipulação de Arquivo Texto - Página 29

keyrelease keytyped MouseListener mousepressed mouseclicked mouseentered mouseexited mouserelease MouseEvent 2.2. Manipulação de arquivos Texto através de aplicações Será demonstrado inicialmente como realizar a manipulação de arquivo texto através de aplicações. Uma vez consolidados esses conceitos, será demonstrado como criar applets que manipulam esses arquivos através do browser. import java.awt.*; import java.awt.event.*; import java.io.*; class ex16 extends Frame implements ActionListener Label l1; Button b1,b2,b3; TextArea t1; public static void main(string[] args) //Fechar Janela ex16 Janela = new ex16(); WindowListener l = new WindowAdapter() public void windowclosing(windowevent e) System.exit(0); ; Janela.addWindowListener(l); Janela.setVisible(true); ex16() settitle("uso de arquivo Texto"); setsize (500,280); setbackground (new Color (150,150,0)); setlayout (new FlowLayout()); l1 = new Label("Texto a ser gravado:"); b1 = new Button("Gravar"); b2 = new Button("Ler"); b3 = new Button("Limpar"); Controle de Eventos e manipulação de Arquivo Texto - Página 30

b1.addactionlistener(this); b2.addactionlistener(this); b3.addactionlistener(this); t1 = new TextArea(); add(l1); add(t1); add(b1); add(b2); add(b3); public void actionperformed(actionevent e) // Sring nome_do_arquivo=system.getproperty("user.home")+file.separatorchar +"arq.txt"; String nome_do_arquivo = "c:/arq.txt"; if (e.getsource() == b3) //limpar t1.settext(""); if (e.getsource() == b1) //gravar try String S = t1.gettext(); byte b[] = S.getBytes(); FileOutputStream out = new FileOutputStream(nome_do_arquivo); out.write(b); out.close(); catch(java.io.ioexception exc) System.out.println("Erro ao gravar no arquivo"); if (e.getsource() == b2) //ler try FileInputStream in = new FileInputStream(nome_do_arquivo); byte bt[] = new byte[10024]; //(int)entrada.length()); in.read(bt); String S = new String(bt); t1.settext(s); in.close(); catch(java.io.ioexception exc) System.out.println("Erro ao ler o arquivo"); Exemplo 16 Abertura e gravação de arquivo texto Controle de Eventos e manipulação de Arquivo Texto - Página 31

Figura 2.2 A classe ex16 sendo executada O exemplo seguinte é uma versão melhorada do exemplo anterior, onde é possível escolher o arquivo que será aberto através da digitação de seu caminho e nome em uma caixa de texto. O exemplo também adiciona uma caixa de texto que demonstra possíveis erros gerados ao abrir ou gravar o arquivo. import java.awt.*; import java.awt.event.*; import java.io.*; class ex17 extends Frame implements ActionListener Label l1,l2,l3; Button b1,b2,b3; TextArea ta1; TextField t1,t2; Panel p1; public static void main(string[] args) ex17 Janela = new ex17(); WindowListener l = new WindowAdapter() public void windowclosing(windowevent e) System.exit(0); ; Janela.addWindowListener(l); Janela.setVisible(true); ex17() Controle de Eventos e manipulação de Arquivo Texto - Página 32

settitle("uso de arquivo Texto"); setsize (500,330); setresizable(false); setbackground (new Color (150,150,0)); setlayout (new FlowLayout()); l1 = new Label("Digite Caminho/nome do arquivo:"); l2 = new Label("Texto a ser gravado:"); l3 = new Label("Status:"); b1 = new Button("Gravar"); b2 = new Button("Ler"); b3 = new Button("Limpar"); b1.addactionlistener(this); b2.addactionlistener(this); b3.addactionlistener(this); p1 = new Panel(); t1 = new TextField(25); t1.setforeground(color.blue); t2 = new TextField(40); t2.setforeground(color.red); t2.seteditable(false); ta1 = new TextArea(); p1.setlayout (new FlowLayout()); p1.add(l3); p1.add(t2); add(l1); add(t1); add(l2); add(ta1); add(b1); add(b2); add(b3); add(p1); public void actionperformed(actionevent e) String nome_do_arquivo = t1.gettext(); if (e.getsource() == b3) //limpar ta1.settext(""); t1.settext(""); t2.settext(""); if (e.getsource() == b1) //gravar try String S = ta1.gettext(); byte b[] = S.getBytes(); FileOutputStream out = new FileOutputStream(nome_do_arquivo); out.write(b); out.close(); catch(java.io.ioexception exc) t2.settext("erro ao gravar no arquivo"); if (e.getsource() == b2) //ler try FileInputStream in = new FileInputStream(nome_do_arquivo); Controle de Eventos e manipulação de Arquivo Texto - Página 33

Curso de Java - Professor Sérgio Furgeri byte bt[] = new byte[10024]; in.read(bt); String S = new String(bt); ta1.settext(s); in.close(); catch(java.io.ioexception exc) t2.settext("erro ao ler o arquivo"); Exemplo 17 Abertura e gravação de arquivo texto Figura 2.3 A classe ex17 sendo executada O exemplo seguinte é uma versão melhorada do exemplo anterior, onde é possível escolher o arquivo que será aberto através de uma caixa de diálogo. O mesmo ocorre no momento de Salvar o arquivo. Isso é possível através da utilização da classe FileDialog da linguagem Java. import java.awt.*; import java.awt.event.*; import java.io.*; class ex18 extends Frame implements ActionListener Label l2,l3; Button b1,b2,b3; TextArea ta1; TextField t1,t2; Panel p1; Controle de Eventos e manipulação de Arquivo Texto - Página 34

FileDialog Fabrir,Fsalvar; Curso de Java - Professor Sérgio Furgeri public static void main(string[] args) ex18 Janela = new ex18(); WindowListener l = new WindowAdapter() public void windowclosing(windowevent e) System.exit(0); ; Janela.addWindowListener(l); Janela.setVisible(true); ex18() settitle("uso de arquivo Texto com caixa de diálogo"); setsize (500,300); setresizable(false); setbackground (new Color (150,150,0)); setlayout (new FlowLayout()); l2 = new Label("Texto a ser gravado:"); l3 = new Label("Status:"); b1 = new Button("Salvar"); b2 = new Button(" Abrir "); b3 = new Button("Limpar"); b1.addactionlistener(this); b2.addactionlistener(this); b3.addactionlistener(this); p1 = new Panel(); t1 = new TextField(25); t1.setforeground(color.blue); t2 = new TextField(40); t2.setforeground(color.red); t2.seteditable(false); ta1 = new TextArea(); p1.setlayout (new FlowLayout()); Fabrir = new FileDialog(this,"Abrir arquivo",filedialog.load); Fsalvar = new FileDialog(this,"Salvar arquivo",filedialog.save); p1.add(l3); p1.add(t2); add(l2); add(ta1); add(b2); add(b1); add(b3); add(p1); public void actionperformed(actionevent e) String nome_do_arquivo = t1.gettext(); if (e.getsource() == b3) //limpar ta1.settext(""); t1.settext(""); t2.settext(""); if (e.getsource() == b1) //gravar try Controle de Eventos e manipulação de Arquivo Texto - Página 35

Fsalvar.show(); if (Fsalvar.getFile()==null) return; nome_do_arquivo = Fsalvar.getDirectory()+Fsalvar.getFile(); String S = ta1.gettext(); byte b[] = S.getBytes(); FileOutputStream out = new FileOutputStream(nome_do_arquivo); out.write(b); out.close(); catch(java.io.ioexception exc) t2.settext("erro ao gravar no arquivo"); if (e.getsource() == b2) //ler try Fabrir.show(); if (Fabrir.getFile()==null) return; nome_do_arquivo = Fabrir.getDirectory()+Fabrir.getFile(); FileInputStream in = new FileInputStream(nome_do_arquivo); byte bt[] = new byte[10024]; in.read(bt); String S = new String(bt); ta1.settext(s); in.close(); catch(java.io.ioexception exc) t2.settext("erro ao ler o arquivo"); Exemplo 18 Abertura e gravação de arquivo texto com FileDialog Controle de Eventos e manipulação de Arquivo Texto - Página 36

Figura 2.4 A classe ex18 sendo executada 2.3. Manipulação de arquivos Texto através de Applets Para a manipulação de arquivos texto através do browser algumas modificações e procedimentos são necessários. Em primeiro lugar, é necessário realizar a conversão da aplicação em Applet. Para simplificar as alterações será criada uma Applet sobre o exemplo ex16. A Applet com o código já convertido é demonstrado a seguir no exemplo ex19. import java.awt.*; import java.awt.event.*; import java.io.*; import java.applet.applet; public class ex19 extends Applet implements ActionListener Label l1; Button b1,b2,b3; TextArea t1; public void init() setbackground (new Color (150,150,0)); setlayout (new FlowLayout()); l1 = new Label("Texto a ser gravado:"); b1 = new Button("Gravar"); b2 = new Button("Ler"); b3 = new Button("Limpar"); b1.addactionlistener(this); b2.addactionlistener(this); b3.addactionlistener(this); t1 = new TextArea(); add(l1); add(t1); add(b1); add(b2); add(b3); Controle de Eventos e manipulação de Arquivo Texto - Página 37

public void actionperformed(actionevent e) String nome_do_arquivo = "c:/arq.txt"; if (e.getsource() == b3) //limpar t1.settext(""); if (e.getsource() == b1) //gravar try String S = t1.gettext(); byte b[] = S.getBytes(); FileOutputStream out = new FileOutputStream(nome_do_arquivo); out.write(b); out.close(); catch(java.io.ioexception exc) System.out.println("Erro ao gravar no arquivo"); if (e.getsource() == b2) //ler try FileInputStream in = new FileInputStream(nome_do_arquivo); byte bt[] = new byte[10024]; //(int)entrada.length()); in.read(bt); String S = new String(bt); t1.settext(s); in.close(); catch(java.io.ioexception exc) System.out.println("Erro ao ler o arquivo"); <html> <TITLE>Curso de Java - Professor Sérgio Furgeri</TITLE> Uma applet mostrando a manipulação de eventos<br><br> <applet code = "ex19.class" width=450 height=250> </applet> </html> Exemplo 19 Manipulação de arquivo texto com uma Applet Controle de Eventos e manipulação de Arquivo Texto - Página 38

Figura 2.5 A Applet ex19 sendo executada pelo Appletviewer Uma vez compilado o programa, deverá ser criado um arquivo de política de segurança, pois uma Applet não pode manipular um arquivo diretamente, antes disso é necessário existir um policy file, que será responsável em definir o que a Applet pode ou não fazer com um arquivo, etc. A seguir são passadas algumas informações sobre as restrições das Applets. 2.3.1 Restrições das Applets As applets foram planejadas para serem carregadas de um site remoto e então serem executadas localmente. Desta forma, para evitar que applets criadas por pessoas sem ética danifiquem o sistema local onde estão sendo executadas, isto é, atuem como um vírus, acessando informações sigilosas, alterando ou ainda apagando dados armazenados no sistema, foram impostas algumas restrições a seu funcionamento. As applets são executadas pelo browser e monitoradas por um gerenciador de segurança (applet security manager) que lança uma interrupção do tipo SecurityException caso a applet viole alguma das regras de segurança impostas. Pelo motivo da applet ser monitorada durante sua execução, é comum dizer que as applets operam dentro de uma caixa de areia, algo que impossibilita que elas saiam de seu raio de atuação. Esse modelo é conhecido por the sandbox model. As tarefas que as applets podem realizar são: exibir imagens, executar sons, processar o acionamento do teclado e mouse e se comunicar com o host de onde foram carregadas. Por outro lado, as applets estão sujeitas as seguintes restrições: não podem executar programas localmente instalados, não podem se comunicar com outros hosts exceto de onde a applet foi carregada, não podem ler e escrever no sistema de arquivos local e não podem obter informações do sistema onde operam exceto sobre a JVM onde operam. Controle de Eventos e manipulação de Arquivo Texto - Página 39

É bastante nítido o aumento de restrições de applets executadas através de download quando comparadas com a execução de programas comuns escritos em Java. Em algumas situações tal nível de restrição se mostra demasiadamente severo para uma applet, assim é possível assinar o código, isto é, anexar um certificado de segurança que ateste a origem da applet tornando-a uma signed applet e permitindo sua execução num nível de restrição semelhante ao de programas comuns. Para retirar essas restrições pode ser criado um arquivo de política (policy file) o qual será demonstrado a seguir. 2.3.2 Criação do Policy File Antes de iniciar a manipulação da PolicyTool, vamos definir um diretório padrão de trabalho para simplificar nossos processos. Crie um diretório chamado MeuApplet no drive C e copie nele os arquivos ex19.java, ex19.class e ex19.html. Para a criação do arquivo que controla o acesso das Applets pode ser usado qualquer editor de textos comum, entretanto para que o aprendizado da sintaxe não seja necessário, a Sun criou uma ferramenta para a criação desses arquivos. Trata-se da PolicyTool, executada diretamente na linha de comando do DOS. Ao executar a ferramenta aparecerá a tela demonstrada pela figura 2.6. Figura 2.6 Tela de abertura da ferramenta Policytool Ao iniciar a ferramenta, provavelmente ela enviará uma mensagem alertando não ter encontrado o arquivo policy default, que normalmente fica armazenado na pasta do Windows. Isso não representa nenhum problema para nós. Para criar um novo arquivo de policy clique no botão Add Policy Entry. Aparecerá uma outra tela contendo os campos: CodeBase: representa o diretório onde o arquivo de policy está armazenado. Digite file:/c:/meuapplet. Controle de Eventos e manipulação de Arquivo Texto - Página 40

SignedBy: representa um apontamento para um arquivo de assinatura que pode ser usado como chave para criptografia. Essa opção não será utilizada em nosso curso. Para prosseguir pressione o botão Add Permission. Aparecerá a tela demonstrada na figura 2.7, onde deverão ser feitas as configurações apontadas: Em Permission escolha: File Permission Em TargetName digite no campo ao lado: c:/arq.txt (deve ser a mesma pasta apontada no programa fonte java) Em Action escolha: read, write, delete, execute. Figura 2.7 Configuração do arquivo de policy A seguir pressione o botão OK e na tela que surge Done. Nesse ponto o arquivo de policy está completo, só falta ser salvo. No menu File escolha Save As, localize o diretório C:\MeuApplet, coloque o nome meu_policy no nome do arquivo e pressione o botão Salvar. Uma mensagem apontando o sucesso da gravação deverá aparecer. Com isso foi criado um arquivo de policy com as seguintes informações: O Applet localizado no diretório C:\MeuApplet (poderia ser um site), pode permissão para ler, gravar, deletar e executar um arquivo chamado arq.txt localizado na mesma pasta. O código gerado pela policytool para nosso arquivo criado, é mostrado a seguir. /* AUTOMATICALLY GENERATED ON Tue Sep 25 10:56:19 BRT 2001*/ /* DO NOT EDIT */ grant codebase "file:/c:/meuapplet" permission java.io.filepermission "c:/arq.txt", "read, write, delete, execute"; ; Nesse ponto já é possível executar a Applet através do appletviewer, digitando a seguinte linha de comando que contém um apontamento para o policy file criado. Appletviewer J-Djava.security.policy=meu_policy ex19.html 2.4. Manipulação de arquivos Texto através do Browser Controle de Eventos e manipulação de Arquivo Texto - Página 41

Para manipular arquivos com o browser é necessário alterar o arquivo que contém as propriedades de segurança do sistema. Esse arquivo encontrase no diretório JAVA_HOME (de acordo com o que está definido no autoexec.bat) e seu nome é java.security. Ele está armazenado em uma pasta chamada security dentro do diretório JAVA_HOME. Um endereço típico pode ser: C:\Arquivos de programas\javasoft\jre\1.3.1\lib\security\java.security. Localize o arquivo java.security em sua máquina e o abra com o Edit do DOS. Encontre a linha policy.url.2=file:$user.home/.java.policy). Depois dessa linha acrescente a linha policy.url.3=file:/c:/meuapplet/meu_policy. Nesse ponto o sistema já está configurado corretamente para permitir que o browser manipule o arquivo texto, entretanto, ainda é necessário converter o arquivo ex19.html com a ferramenta HTMLConverter. Só assim será possível executar a Applet ex19.class com o browser. Figura 2.8 A Applet ex19 sendo executada pelo browser Controle de Eventos e manipulação de Arquivo Texto - Página 42