java introdução (c)ab,20001 java linguagem orientada por objectos (similar ao c++ mas mais...
TRANSCRIPT
Java Introdução (c)AB,2000 1
JAVA
Linguagem orientada por objectos (similar ao C++ mas mais simples)
Utilizada para desenvolvimento de aplicações stand-alone,applets,…
Desenvolvida pela Sun Microsystems
A Sun desenvolveu um browser específico para Java: HotJava
O Netscape Navigator 2.0 passou a suportar Java (outros browsers passaram de igual modo a suportar Java)
Java Introdução (c)AB,2000 2
JAVAAmbientes de desenvolvimento
Java Development Kit (JDK) - SUNDesenvolvido pela SUNContém (entre outros):
Bibliotecas de classes pré-definidas (JFC - Java Foundation Classes)Compilador (javac)Interpretador (java)Ferramenta de documentação (javadoc)
Visual J++ (Microsoft) Forte/NetBeans (Sun)Jbuilder (Borland)Visual Cafe (Symantec)
Exemplos
Java Introdução (c)AB,2000 3
JAVA
Aplicação Java que pode ser incorporada em páginas HTML
A utilização de uma applet num ficheiro HTML é efectuadaatravés da marca <APPLET>
Nota: no HTML 4.0 a marca <APPLET> está a ser substituídapela marca <OBJECT> que serve para qualquer objecto. Osparâmetros a usar são os mesmos, no entanto não existeuma grande generalização a nível de programação paraconcretizar esta nova recomendação...
Applet
Java Introdução (c)AB,2000 4
JAVA
A utilização de uma applet num ficheiro HTML é efectuadaatravés da marca <APPLET>
Exemplo:
<APPLET CODE=“Exemplo.class” WIDTH=100 HEIGHT=50></APPLET>
Applet
Java Introdução (c)AB,2000 5
JAVA<APPLET>
Atributos obrigatórios
CODE, nome do ficheiro que contém a classe principal da appletWIDTH, largura inicial da applet em pixeisHEIGHT, altura inicial da applet em pixeis
Atributos opcionaisCODEBASE, define o URL da applet. Se for omitido é considerado o URL da página em que a applet for chamadaNAME, nome lógico da applet. Pode ser utilizado por outras applets da mesma página para a localizarALIGN, alinhamento da appletVSPACE, espaço vertical à volta da appletHSPACE, espaço horizontal à volta da applet
Applet
Java Introdução (c)AB,2000 6
JAVA
Parâmetros adicionais da applet delimitados por uma marca<PARAM>
NAME, especifica um nome de um determinado atributoVALUE, valor correspondente para o atributo especificado
<APPLET CODE=“Exemplo.class” WIDTH=100 HEIGHT=50><PARAM NAME=texto VALUE=“linha de texto”></APPLET>
Exemplo:
Applet
Java Introdução (c)AB,2000 7
JAVAApplet
Ciclo de vida das applets
init start stop destroy
A appleté criada
A página éacedida
Regressoà página
Abandonoda página
Os recursos da appletsão libertados
Java Introdução (c)AB,2000 8
JAVAApplet
Uma applet é uma subclasse da classe Applet em que se podem redefinirmétodos, que são invocados automaticamente pelo browser WWW
init () - Inicializa a applet (load da página)
start () - Arranca a execução da applet (load/entrar na página, por back, forward ou hyperlink)
stop () - Pára a execução (sair da página, minimizar browser)
destroy () - Destrói a applet (sair do browser)
Java Introdução (c)AB,2000 9
JAVA
Ficheiros .java Ficheiros de códigode byte .class
Máquina Virtual JAVA(Ex:browser que compreende JAVA)
código-fonte
Máquina Virtual JAVA
Java Introdução (c)AB,2000 10
JAVAMáquina Virtual Java (JVM)
Independência da máquina Emuladores diferentes de máquinas virtuais Java em função da plataforma em uso
Segurança Código java é executado dentro de máquinas virtuais java que verificam o comportamento do programa
Tamanho reduzido do código JVMs têm bibliotecas de funções incorporadas. As funções são chamadas apenas quando necessário em vez de estarem ligadas aos programas, logo, redução de tempos de transferência...
Vantagens
Java Introdução (c)AB,2000 11
JAVA
Desvantagem : decréscimo de desempenho
Compilação em tempo real
Programas em código de byte Java não são executados tãodepressa como os programas em código nativo normal (mecanismos Just In Time compilation tentam acelerar o processo)
A compliação em tempo real considera os códigos de byte Javacomo linguagem de código-fonte que é compilada comoprograma para a linguagem da máquina local
Máquina Virtual Java (JVM)
Java Introdução (c)AB,2000 12
Programação JAVAPalavras reservadas de Java
abstractbooleanbreakbytecasecatchcharclassconstcontinue
defaultdodoubleelseextendsfalsefinalfinallyfloatfor
gotoifimplementsimportinstanceofintinterfacelongnativenew
nullpackageprivateprotectedpublicreturnshortstaticsuperswitch
synchronizedthisthrowthrowstransienttruetryvoidvolatilewhile
Java Introdução (c)AB,2000 13
Programação JAVAComentários
/* zona de texto
comentada…. */
int inteiro; // comentário na linha
ou
Java Introdução (c)AB,2000 14
Programação JAVADeclaração de variáveis
Variáveis
Locais - conhecidas apenas dentro da função que as declara
Globais - conhecidas por várias funções (ex: atributos de classe)
Java Introdução (c)AB,2000 15
Programação JAVADeclaração de variáveis
Podem aparecer em qualquer ponto da função
A declaração consiste num tipo, nome da variável e opcionalmente, do operador de atribuição (=) e deuma expressão que representa o valor inicial da variável
Exemplo:
int inteiro;int outroInteiro = 40;
Nota: instruções em Java terminam com ponto e vírgula (;)
Java Introdução (c)AB,2000 16
Programação JAVADeclaração de variáveis
Tipos de dados intrínsecos
Tipode dado
booleanbytecharshortintlongfloatdouble
Tamanho(bits)
8161632643264
Valorpré-definido
false0‘x0’0000,0F0,0D
Observações
Pode tomar valores true ou falseNúmero inteiro entre -128 e 127Tipo caracter, norma Unicode 16 bitsNúmero inteiro entre -32768 e 32767Número inteiroNúmero inteiroNúmero real (vírgula flutuante)Número real (vírgula flutuante)
Java Introdução (c)AB,2000 17
Programação JAVATipos de dados intrínsecos
Todos os tipos numéricos têm sinal
O Java não suporta inteiros numéricos sem sinal
Se a variável não for inicializada pelo programador é-lhe atribuído um valor pré-definido
Os caracteres em Java ocupam 16 bits e são sempre consideradoscomo sendo Unicode
Nota: O ASCII é um subconjunto do Unicode. Os primeiros 128 caracteres são os mesmos que os do ASCII, depois o Unicode associa outros valores aos caracteres acentuados e outros
Java Introdução (c)AB,2000 18
Programação JAVA
Exemplos de utilização:
boolean resposta = true;char c = ‘A’;byte b = 80;short s = -12010;int i = 110412;long l = 2000000000;float f = 2.23;double d = 2.5e10;
Tipos de dados intrínsecos
Java Introdução (c)AB,2000 19
Programação JAVACaracteres literais especiais
Nova LinhaTabulaçãoApagar para trásRegressar ao início da linhaNova páginaApóstrofoAspasBarra Invertida
\n\t\b\r\f\’\”\\
Java Introdução (c)AB,2000 20
Programação JAVAConversão de tipos
O Java converte automaticamente um tipo numérico para outro superior (promoção) no entanto é preferível utilizar uma conversão
Exemplo:int inteiro;long longo;longo = inteiro; // O java aceitalongo = (long) inteiro; // preferível efectuar o cast
inteiro = longo; // erro na compilaçãointeiro = (int) longo; // ok
Java Introdução (c)AB,2000 21
Programação JAVA
+ Adição- Subtracção* Multiplicação/ Divisão% Módulo
Aritméticos
Operadores
++ Incremento de uma unidade-- Decremento de uma unidade
Nota:
a = a + 5;é o mesmo que a+=5;
Ex: ++numero;
Java Introdução (c)AB,2000 22
Programação JAVA
Relacionais
== Igual a…!= Diferente de …< Menor que…> Maior que…<= Menor ou igual que…>= Maior ou igual que...
Operadores
Exemplo:
if ( a > b ) { // ...}
Java Introdução (c)AB,2000 23
Programação JAVA
! Negação~ Complemento& Conjunção (AND binário)| Disjunção (OR binário)^ Disjunção exclusiva (XOR binário)<< shift binário>> shift binário>>> shift à direita com colocação de zeros à esquerda
&& AND antecipado (a expressão lógica é avaliada antes de terminada)|| OR antecipado (a expressão lógica é avaliada antes de terminada)
Operadores
Java Introdução (c)AB,2000 24
Programação JAVA
Operadores com a mesma precedência são executadosda esquerda para a direita
Exemplo:
int inteiro;inteiro = 2 + 6 + 1; // o resultado é 9inteiro = 2 + 6 * 2: // o resultado é 14 pois a precedência de // ‘*’ tem precedência superior em relação a ‘+’
Precedência de Operadores
Java Introdução (c)AB,2000 25
Programação JAVA
. [ ] ( )++ -- ! ~ instanceof* / %+ -<< >> >>>< > <= >=== !=&^|&&||?:= op =,
+
Precedência de Operadores
-
Java Introdução (c)AB,2000 26
Programação JAVA
Arrays (estruturas de dados do tipo vectorial e/ou matricial)
int vectorInteiros[] = new int[50];
int matrizInteiros[][] = new int[50][4];
Exemplo:
Criar e inicializar arrays
Exemplo: char alfabeto[] = { ‘a’, ‘b’, ‘c’, ‘d’ };int notas[] = { 20, 15, 15, 14, 11, 10, 18 };
Arrays
Java Introdução (c)AB,2000 27
Programação JAVA
Instrução ifinstrução switch
ciclo forciclo while
Controlo de fluxo
Decisõ
es
Ciclos
Java Introdução (c)AB,2000 28
Programação JAVAInstrução if
If ( condição ){ // … instruções
}else { // … instruções
}Nota: o bloco else é opcional
Java Introdução (c)AB,2000 29
Programação JAVAInstrução switch
switch ( variável ){
case valor1: // instruções… break;
case valor2: // instruções… break;
default: // instruções…
}
Java Introdução (c)AB,2000 30
Programação JAVAciclo for
for ( inicialização; condição de controlo; incremento ){ // instruções
}Exemplo:
for ( int I = 0; I < 100; I++) { // ...}
Java Introdução (c)AB,2000 31
Programação JAVAciclo while
while ( condição de controlo ) { // instruções...
}
ou
do { // instruções...
} while ( condição de controlo );
Exemplo:
int a = 0;while ( a < 100 ) { a=a+1; // ...}
Java Introdução (c)AB,2000 32
Programação JAVACriar classes em Java
modificador(es) class NomeDaClasse{ // membros da classe (atributos e métodos)
}
exemplo de modificadores:
public (acessibilidade total da classe)abstract (métodos abstractos a definir pelas subclasses)final (classe que não poderá ser base de herança)
Java Introdução (c)AB,2000 33
Programação JAVACriar classes em Java
Pontopublic class Ponto{ private int m_x;
private int m_y;
public Ponto(){ m_x = 0; m_y = 0;}
}
Atributos da classe, neste casoprivate garante o encapsulamentodos dados
Construtor por defeito da classe,é público, não devolve nenhum tipo,tem o mesmo nome da classe e não recebe argumentos
Java Introdução (c)AB,2000 34
Programação JAVACriar classes em Java
Ponto
O construtor é invocado sempre quese cria um novo objecto da classe
Ponto p1;
p1 = new Ponto();
p1 é referência para instânciasda classe Ponto
O novo objecto é criado, a sua referência fica com p1.
De acordo com o exemplo, o construtor da classe coloca zeronos atributos privados m_x e m_y
Java Introdução (c)AB,2000 35
Programação JAVACriar classes em Java
Ponto
public class Ponto{ private int m_x;
private int m_y;
public Ponto(){ m_x = 0; m_y = 0;}
public Ponto(int x, int y){ m_x = x; m_y = y;}
}
Construtor alternativo da classe Ponto
Passa a ser possível criar objectosda classe Ponto com valores iniciais
Exemplo:
Ponto p1 = new Ponto( 10, 5);
Java Introdução (c)AB,2000 36
Programação JAVACriar classes em Java
Ponto
public class Ponto{ private int m_x;
private int m_y;
public Ponto(){ m_x = 0; m_y = 0;}
public Ponto(int x, int y){ m_x = x; m_y = y;}
}
Problema
Os atributos de Ponto são privados.
Como pode o “mundo exterior” obteros valores de m_x e m_y respeitando o princípio do encapsulamento da informação?
Java Introdução (c)AB,2000 37
Programação JAVACriar classes em Java
Ponto
public class Ponto{ private int m_x;
private int m_y;
public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }
public int X() { return m_x; }
public int Y() { return m_y; }
}
Uma solução possível:
criar métodos de acessopúblico para obtençãodos valores dos atributos
Java Introdução (c)AB,2000 38
Programação JAVACriar classes em Java
Ponto
public class Ponto{ private int m_x;
private int m_y;
public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }
public int X() { return m_x; }
public int Y() { return m_y; }
}
Novo Problema
Possibilitar a colocaçãode valores em m_x e m_y a partir de mensagensenviadas aos objectosda classe Ponto.
Java Introdução (c)AB,2000 39
Programação JAVACriar classes em Java
Ponto
public class Ponto{ private int m_x;
private int m_y;
public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }
public int X() { return m_x; } public int Y() { return m_y; }
public void X(int x) { m_x = x; } public void Y(int y) { m_y = y; }
}
Preparar métodos públicos deatribuiçãode valores a m_x e m_y
É uma responsabilidadeda classe efectuar estasoperações...
Java Introdução (c)AB,2000 40
Programação JAVACriar classes em Java
public class Ponto{ private int m_x;
private int m_y;
public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }
public int X() { return m_x; } public int Y() { return m_y; }
public void X(int x) { m_x = x; } public void Y(int y) { m_y = y; }
}
Exemplo:
Ponto p1 = new Ponto();Ponto p2 = new Ponto(2,3);
p1.X(4);p1.Y(8);
int a;
a = p1.X();
p2.X( a );
p2.Y( p1.Y() );
4
8
4
Java Introdução (c)AB,2000 41
Programação JAVACriar classes em Java
Ponto p;
p = new Ponto(1,1);p = new Ponto(2,2);p = new Ponto(3,3);p = new Ponto(4,4);p = new Ponto(5,5);p = new Ponto(6,6);p = new Ponto(7,7);
p = new Ponto(8,8);
Instanciar objectos da classe Ponto
Neste caso foram criados 8 novosobjectos da classe Ponto, no entanto,fica apenas referenciado o últimoponto em p
Perdem-se todas as referências anteriores
p só guarda a última referência atribuída
O que acontece aos outros objectosque nasceram e estão perdidos?
Java Introdução (c)AB,2000 42
Programação JAVACriar classes em Java
Ponto p;
p = new Ponto(1,1);p = new Ponto(2,2);p = new Ponto(3,3);p = new Ponto(4,4);p = new Ponto(5,5);p = new Ponto(6,6);p = new Ponto(7,7);
p = new Ponto(8,8);
GC O que acontece aos outros objectosque nasceram e estão perdidos?
R: O mecanismo GC (Garbage Collection) entra em funcionamento.
O Java executa continuamente uma tarefa de segundo plano para libertar recursos de todos os objectos criados e que não estejam referenciados
Gestão automática de memória
Nota: System.gc força a execução do GC
Java Introdução (c)AB,2000 43
Programação JAVACriar classes em Java
A referência this
class Conta{ double m_saldo;
Conta() { m_saldo = 0.0; // equivalente a this.m_saldo=0.0; }
}
Sempre que um métodofaz uma referência não
qualificada a outro membroda mesma classe, existe uma referência implícita
a this.
Exemplo:
Java Introdução (c)AB,2000 44
Programação JAVAClasses em Java, Herança
class A{ // ...}
class B extends A{ // ...}
A
B
Java Introdução (c)AB,2000 45
Programação JAVAA classe Object
Object é a super-classe de todas as classes
Qualquer classe expande automaticamente a classe Object
Todas as classes herdam os métodos de Object
class A{ // ...}
ou
class A extends Object{ // ...}
Java Introdução (c)AB,2000 46
Programação JAVAA classe Object
Principais métodos de Object
protected Object clone, devolve uma cópia do objecto
public final Class getClass, devolve o objecto Class
O objecto Class descreve a classe actualClass.toString devolve o nome da classe
toString, devolve uma descrição Unicode do objecto.
Object.toString devolve o endereço do objecto, no entantooutras classes sobrecarregam toString para proporcionar uma descrição mais útil do objecto Class
Java Introdução (c)AB,2000 47
Programação JAVAA classe String
String é a classe geral para representar cadeias de caracteres Unicode
String representa uma cadeia fixa de caracteres
String oferece métodos úteis como concat, compareTo, toUpper, toLower
A classe StringBuffer
A classe StringBuffer representa uma cadeia de caracteresdinamicamente dimensionável(ex métodos: append, insert,…)
Java Introdução (c)AB,2000 48
Programação JAVAA classe System
A classe System proporciona uma interface independentedo sistema para algumas funções gerais
in, out e err são as funcionalidades mais úteis de System
Objectos padrão de E/S
ObjectoSystem.inSystem.outSystem.err
TipoBufferedInputStreamPrintStreamPrintStream
Descriçãoentrada-padrão (normalmente teclado)saída-padrão (normalmente ecrã)saída de erro (normalmente ecrã)
Java Introdução (c)AB,2000 49
Programação JAVA
Controlo/Tratamento de erros através de excepções
Blocos try/catch
try{ // instruções… a = 50; b=0; objecto.Divide(a,b);}catch (Exception e){ // visualização, situação de erro...}
class A { // ...
public double Divide(double d1, double d2) { if ( d2 == 0 ) { throw new Exception(“Divisão por zero!”); } return ( d1 / d2 ); }}
Java Introdução (c)AB,2000 50
Programação JAVAinterfaces
Uma interface permite ao programador descrever uma série de capacidades que uma classe deve implementar
interface ipersistente{ void Store(); void Restore();}
Uma classe realiza umainterface utilizandoa palavra-chave implements
Uma classe que implementa umainterface não está a herdar nadaapenas promete implementar osmétodos definidos na interface
class B extends A implements ipersistente{ // … definir na classe Store() e Restore()}
Java Introdução (c)AB,2000 51
Programação JAVAPacotes Java: packages
Por uma questão de organização é possível combinar classes em packages.
As classes estão agrupadas mas não têm que estar relacionadas, pelo menos da mesma forma que uma classe derivada se relaciona com a sua classe base.
Os nomes das packages podem conter pontos finais.
Por convenção, os nomes das packages são constituídos por várias palavras (a primeira pode indicar o nome da organização que a desenvolveu)
Java Introdução (c)AB,2000 52
Programação JAVAPacotes Java: packages
Adicionar uma classe a uma package:
package edu.escola;
public class Aluno{ // instruções….}
Java Introdução (c)AB,2000 53
Programação JAVAPacotes Java: packages
Utilizar uma classe de uma package
import edu.escola.Aluno;
Utilizar todas as classes de uma package
import edu.escola.*;
Java Introdução (c)AB,2000 54
Programação JAVAPacotes Java: packages
Packages da biblioteca Java (exemplos)
java.lang , inclui as classes mais importantes da biblioteca Java. É importado por definição. (Ex: Object,String, classes para tipos intrínsecos, …)
java.applet, inclui as classes necessárias para a criação de applets
java.awt, Abstract Window Toolkit, conjunto de ferramentas para processamento de janelas
java.util, classes de utilidade geral (Ex: Date, Random,Vector,...)
Java Introdução (c)AB,2000 55
Programação JAVAPacotes Java: packages
Packages da biblioteca Java (exemplos)
java.net, classes para operações de rede sobre TCP/IP (Ex: URL, URLConnection,…)
java.beans, especificação de objectos de tipo “Java Beans”
java.math, tipos númericos especiais
java.sql, bases de dados/SQL
java.servlet, criação de servlets
Java Introdução (c)AB,2000 56
Programação JAVA
Exemplo
O pacote java.io,a classe Systeme blocos try/catch
import java.io.*;public class Class1{
public static void main (String[] args){try {
byte cadeiaBytes[] = new byte[128];System.out.println("Digite uma frase: ");System.in.read(cadeiaBytes);String s = new String(cadeiaBytes);System.out.println(s);
}catch (IOException e)
{System.out.println(e.toString());e.printStackTrace();}
}}
Java Introdução (c)AB,2000 57
Programação JAVAAWT
Abstract Window Toolkit
Conjunto de Ferramentas para Janelas
Contém classes para componentes gráficos para qualquer plataforma de interface GUI
A própria classe Applet é membro do AWT
A super-classe da maioria das classes que compõemo package AWT é a Component
Usar package javax.swing.*
(encapsula e melhora a awt)
Java Introdução (c)AB,2000 58
Programação JAVAAWT
Component
Container
Window Panel
Dialog Frame
FileDialog
Applet
Button
Canvas
Checkbox
Label
List
ScrollbarTextComponent
TextArea TextField
Subclasses de Component (super-classe da maioria das classes do AWT)
Java Introdução (c)AB,2000 59
Programação JAVAAWT
Exemplo: import java.awt.*;import java.applet.*;
public class Applet1 extends Applet{
Label m_label = new Label("Programação em JAVA");Button m_botao = new Button("Botão 1");TextField m_campoTexto = new TextField(10);
public void init(){
add ( m_label ); add ( m_botao ); add ( m_campoTexto );
}}
Applet
Label
Button
TextField
Java Introdução (c)AB,2000 60
Programação JAVAAWT
Nota: o layout por defeito neste caso é FlowLayout
Java Introdução (c)AB,2000 61
Programação JAVAAWT
Principais formas de Layout (apresentação dos componentes)
FlowLayout
BorderLayout
GridLayout
Os componentes são posicionados daesquerda para a direita pela ordem emque estão ligados
Permite posicionar componentes relativamenteaos limites da janela (North, South, East, West e Center)
Os componentes são posicionados numa filosofiade grelha
Nota: o método setLayout da Applet permite mudar o layout
Java Introdução (c)AB,2000 62
Programação JAVAAWT
Exemplo #1:
utilização de BorderLayout
// exemplo anterior (Applet1)// ...
public void init(){ setLayout(new BorderLayout());
add ( "North", m_label ); add ( "Center", m_campoTexto ); add ( "South", m_botao );}
// ...
Aos objectos North e Southé atribuído o espaço verticalnecessário.
Aos objectos West e East éatribuído o espaço horizontalnecessário dentro de qualquerespaço vertical que ainda reste
Aos objectos Center é atribuídoo restante espaço
Java Introdução (c)AB,2000 63
Programação JAVAAWT
Exemplo #1: utilização de BorderLayout
Java Introdução (c)AB,2000 64
Programação JAVAAWT
Exemplo #2: utilização de BorderLayout
Button b1 = new Button("B1");Button b2 = new Button("B2");Button b3 = new Button("B3");Button b4 = new Button("B4");Button b5 = new Button("B5");
setLayout(new BorderLayout());
add("North", b1);add("West", b2);add("Center", b3);add("East", b4);add("South", b5);
Java Introdução (c)AB,2000 65
Programação JAVAAWT
Paineis
GridLayout ( 4, 1 )
1234
Java Introdução (c)AB,2000 66
Programação JAVAAWT
Paineis
painelm_painelTiposConta
painel m_painelValor
painel m_painelOperacoes
zona para Labelsem painelp1
Java Introdução (c)AB,2000 67
Programação JAVAAWT
Paineis
FlowLayout
FlowLayout
BorderLayout
GridLayout ( 1, 2)
Java Introdução (c)AB,2000 68
Programação JAVAAWT
Panel m_painelTiposConta;Panel m_painelValor;Panel m_painelOperacoes;
CheckboxGroup m_cbg;Checkbox m_cbContaOrdem;Checkbox m_cbContaMulti;
Label m_label1 = new Label("Valor");Label m_labelMsg = new Label("");
Button m_botaoDep = new Button("Depositar");Button m_botaoLev = new Button("Levantar");Button m_botaoSaldo = new Button("Saldo");Button m_botaoLimpar = new Button("Limpar");
TextField m_campoTexto = new TextField(15);
Painéis e outros componentes
Java Introdução (c)AB,2000 69
Programação JAVAAWT
public void init(){ m_cbg = new CheckboxGroup(); m_cbContaOrdem = new Checkbox("Conta Ordem", m_cbg, false); m_cbContaMulti = new Checkbox("Conta Multibanco", m_cbg, true);
// ...
Painéis e outros componentes
Java Introdução (c)AB,2000 70
Programação JAVAAWTPainéis e outros componentes
m_painelTiposConta = new Panel();m_painelTiposConta.setLayout(new FlowLayout(FlowLayout.CENTER));m_painelTiposConta.add(m_cbContaOrdem);m_painelTiposConta.add(m_cbContaMulti);
m_painelValor = new Panel();m_painelValor.setLayout(new FlowLayout(FlowLayout.CENTER));m_painelValor.add(m_label1);m_painelValor.add(m_campoTexto);m_painelValor.add(m_botaoLimpar);
m_painelOperacoes = new Panel();m_painelOperacoes.setLayout(new BorderLayout());
Panel p1 = new Panel();p1.setLayout(new GridLayout(1,2));p1.add(m_botaoDep);p1.add(m_botaoLev);
m_painelOperacoes.add("Center", m_botaoSaldo);m_painelOperacoes.add("South", p1);
Java Introdução (c)AB,2000 71
Programação JAVAAWTPainéis e outros componentes
setLayout(new GridLayout(4,1));
add ( m_painelTiposConta );add ( m_painelValor );add ( m_painelOperacoes );add ( m_labelMsg );
Java Introdução (c)AB,2000 72
Programação JAVAAWTInterceptar eventos em Applets
Exemplo:
O utilizador escreve livremente no componente TextField
Se carregar no Botão 1 então o texto escrito deve substituir “Programação em JAVA” na label
Nota: exemplo desenvolvido em J++ compatível com JDK
Java Introdução (c)AB,2000 73
Programação JAVAAWT
import java.applet.*;import java.awt.*;import java.awt.event.*;
public class Applet1 extends Applet implements ActionListener{
Label m_label = new Label("Programação em JAVA");Button m_botao = new Button("Botão 1");TextField m_campoTexto = new TextField(10);
// pedimos desculpa por esta interrupção, a classe continua nos próximo slides...
Interceptar eventos em Applets
Java Introdução (c)AB,2000 74
Programação JAVAAWT
//..
public void init(){
setLayout(new BorderLayout());add ( "North", m_label );add ( "Center", m_campoTexto );add ( "South", m_botao );
m_botao.addActionListener(this);
}
// ...
Interceptar eventos em Applets
Java Introdução (c)AB,2000 75
Programação JAVAAWTInterceptar eventos em Applets
public void actionPerformed(ActionEvent evento){ Object objectoAlvo = (Object) evento.getSource(); if ( objectoAlvo instanceof Button ) {
Button b = (Button) objectoAlvo; String s = b.getLabel();
if ( s.compareTo("Botão 1") == 0 ) { m_label.setText( m_campoTexto.getText() ); } }}
} // fim da classe Applet1
Java Introdução (c)AB,2000 76
Programação JAVAAWTInterceptar eventos em Applets
public void actionPerformed(ActionEvent evento){
if ( evento.getSource() == m_botaoLimpar ){ m_campoTexto.setText("");}
}} // fim da classe Applet1
Ou de uma forma mais simples...
Java Introdução (c)AB,2000 77
Programação JAVAClasse GraphicsFuncionalidades gráficas em Applets
Graphics é argumento do método paint de Applet
public void paint(Graphics g){ g.setFont(new Font( "TimesRoman", Font.BOLD, 36));
g.setColor ( Color.red );
g.drawString ( "Java", 10, 100);}
Nota: repaint() provoca uma chamada a paint
Java Introdução (c)AB,2000 78
Programação JAVAClasse GraphicsFuncionalidades gráficas em Applets
Graphics é argumento do método paint de Applet
public void paint(Graphics g){ g.setColor(Color.red); g.drawRect(10,10,110,50); g.fillRect(50,15,30,20);
g.setColor(Color.blue); g.drawOval(10,15,110,25);
g.setColor(Color.black); g.drawLine(10,25, 110, 25);
}
x
y
Java Introdução (c)AB,2000 79
Na WWW…
Sobre Java
www.sun.comwww.javasoft.com subsidiária da Sun
sunsite.unc.edu/javafaqwww.gamelan.com ligações a outros sites Java
www.programmingtutorials.com