Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais...

Post on 22-Apr-2015

103 views 0 download

Transcript of Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais...

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