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
1
JAVA
Ambientes de desenvolvimento
Java Development Kit (JDK) - SUN
Desenvolvido pela SUN
Contém (entre outros):
Bibliotecas de classes pré-definidas
(JFC - Java Foundation Classes)
Compilador (javac)
Interpretador (java)
Ferramenta de documentação (javadoc)
Visual J++ (Microsoft)
Jbuilder (Borland)
Visual Cafe (Symantec)
Exemplos
Forte/NetBeans (Sun)
Java Introdução (c)AB,2000
2
JAVA
Applet
Aplicação Java que pode ser incorporada em páginas HTML
A utilização de uma applet num ficheiro HTML é efectuada
através da marca <APPLET>
Nota: no HTML 4.0 a marca <APPLET> está a ser substituída
pela marca <OBJECT> que serve para qualquer objecto. Os
parâmetros a usar são os mesmos, no entanto não existe
uma grande generalização a nível de programação para
concretizar esta nova recomendação...
Java Introdução (c)AB,2000
3
JAVA
Applet
A utilização de uma applet num ficheiro HTML é efectuada
através da marca <APPLET>
Exemplo:
<APPLET CODE=“Exemplo.class” WIDTH=100 HEIGHT=50>
</APPLET>
Java Introdução (c)AB,2000
4
<APPLET>
JAVA
Applet
Atributos obrigatórios
CODE, nome do ficheiro que contém a classe principal da applet
WIDTH, largura inicial da applet em pixeis
HEIGHT, altura inicial da applet em pixeis
Atributos opcionais
CODEBASE, define o URL da applet. Se for omitido é considerado o URL
da página em que a applet for chamada
NAME, nome lógico da applet. Pode ser utilizado por outras applets
da mesma página para a localizar
ALIGN, alinhamento da applet
VSPACE, espaço vertical à volta da applet
HSPACE, espaço horizontal à volta da applet
Java Introdução (c)AB,2000
5
JAVA
Applet
Parâmetros adicionais da applet delimitados por uma marca
<PARAM>
NAME, especifica um nome de um determinado atributo
VALUE, valor correspondente para o atributo especificado
Exemplo:
<APPLET CODE=“Exemplo.class” WIDTH=100 HEIGHT=50>
<PARAM NAME=texto VALUE=“linha de texto”>
</APPLET>
Java Introdução (c)AB,2000
6
JAVA
Applet
Ciclo de vida das applets
A página é
acedida
A applet
é criada
init
Abandono
da página
start
stop
Os recursos
da applet
são libertados
destroy
Regresso
à página
Java Introdução (c)AB,2000
7
JAVA
Applet
Uma applet é uma subclasse da classe Applet em que se podem redefinir
mé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
8
JAVA
Máquina Virtual JAVA
Máquina Virtual JAVA
(Ex:browser que compreende JAVA)
Ficheiros .java
Ficheiros de código
de byte .class
código-fonte
Java Introdução (c)AB,2000
9
JAVA
Vantagens
Má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...
Java Introdução (c)AB,2000
10
JAVA
Máquina Virtual Java (JVM)
Desvantagem : decréscimo de desempenho
Compilação em tempo real
Programas em código de byte Java não são executados tão
depressa 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 Java
como linguagem de código-fonte que é compilada como
programa para a linguagem da máquina local
Java Introdução (c)AB,2000
11
Programação JAVA
Palavras reservadas de Java
abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
false
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
super
switch
Java Introdução (c)AB,2000
synchronized
this
throw
throws
transient
true
try
void
volatile
while
12
Programação JAVA
Comentários
/* zona
de texto
comentada…. */
ou
int inteiro; // comentário na linha
Java Introdução (c)AB,2000
13
Programação JAVA
Declaração de variáveis
Locais - conhecidas apenas dentro da função
que as declara
Variáveis
Globais - conhecidas por várias funções
(ex: atributos de classe)
Java Introdução (c)AB,2000
14
Programação JAVA
Declaraçã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 de
uma 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
15
Programação JAVA
Declaração de variáveis
Tipos de dados intrínsecos
Tipo
Tamanho
de dado (bits)
Observações
Valor
pré-definido
boolean
byte
char
short
int
long
float
double
false
0
‘x0’
0
0
0
0,0F
0,0D
8
16
16
32
64
32
64
Pode tomar valores true ou false
Número inteiro entre -128 e 127
Tipo caracter, norma Unicode 16 bits
Número inteiro entre -32768 e 32767
Número inteiro
Número inteiro
Número real (vírgula flutuante)
Número real (vírgula flutuante)
Java Introdução (c)AB,2000
16
Programação JAVA
Tipos 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 considerados
como 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
17
Programação JAVA
Tipos de dados intrínsecos
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;
Java Introdução (c)AB,2000
18
Programação JAVA
Caracteres literais especiais
Nova Linha
Tabulação
Apagar para trás
Regressar ao início da linha
Nova página
Apóstrofo
Aspas
Barra Invertida
\n
\t
\b
\r
\f
\’
\”
\\
Java Introdução (c)AB,2000
19
Programação JAVA
Conversã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 aceita
longo = (long) inteiro; // preferível efectuar o cast
inteiro = longo; // erro na compilação
inteiro = (int) longo; // ok
Java Introdução (c)AB,2000
20
Programação JAVA
Operadores
Aritméticos
+
*
/
%
Nota:
a = a + 5;
é o mesmo que
a+=5;
Adição
Subtracção
Multiplicação
Divisão
Módulo
++ Incremento de uma unidade
-- Decremento de uma unidade
Java Introdução (c)AB,2000
Ex: ++numero;
21
Programação JAVA
Operadores
Relacionais
==
!=
<
>
<=
>=
Igual a…
Diferente de …
Menor que…
Maior que…
Menor ou igual que…
Maior ou igual que...
Java Introdução (c)AB,2000
Exemplo:
if ( a > b ) {
// ...
}
22
Programação JAVA
Operadores
!
~
&
|
^
<<
>>
>>>
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)
Java Introdução (c)AB,2000
23
Programação JAVA
Precedência de Operadores
Operadores com a mesma precedência são executados
da esquerda para a direita
Exemplo:
int inteiro;
inteiro = 2 + 6 + 1; // o resultado é 9
inteiro = 2 + 6 * 2: // o resultado é 14 pois a precedência de
// ‘*’ tem precedência superior em relação a ‘+’
Java Introdução (c)AB,2000
24
Programação JAVA
Precedência de Operadores
+
-
.[]()
++ -- ! ~ instanceof
*/%
+<< >> >>>
< > <= >=
== !=
&
^
|
&&
||
?:
= op =
,
Java Introdução (c)AB,2000
25
Programação JAVA
Arrays
Arrays (estruturas de dados do tipo vectorial e/ou matricial)
Exemplo:
int vectorInteiros[] = new int[50];
int matrizInteiros[][] = new int[50][4];
Criar e inicializar arrays
Exemplo:
char alfabeto[] = { ‘a’, ‘b’, ‘c’, ‘d’ };
int notas[] = { 20, 15, 15, 14, 11, 10, 18 };
Java Introdução (c)AB,2000
26
Programação JAVA
Controlo de fluxo
if
instrução switch
Instrução
for
ciclo while
ciclo
Java Introdução (c)AB,2000
27
Programação JAVA
Instrução if
If ( condição )
{
// … instruções
}
else
{
// … instruções
}
Nota: o bloco else é opcional
Java Introdução (c)AB,2000
28
Programação JAVA
Instrução switch
switch ( variável )
{
case valor1:
// instruções…
break;
case valor2:
// instruções…
break;
default:
// instruções…
}
Java Introdução (c)AB,2000
29
Programação JAVA
ciclo 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
30
Programação JAVA
ciclo while
while ( condição de controlo ) {
// instruções...
}
ou
Exemplo:
int a = 0;
while ( a < 100 ) {
a=a+1;
// ...
}
do {
// instruções...
} while ( condição de controlo );
Java Introdução (c)AB,2000
31
Programação JAVA
Criar 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
32
Programação JAVA
Criar classes em Java
public class Ponto
{
private int m_x;
private int m_y;
public Ponto()
{
m_x = 0;
m_y = 0;
}
}
Ponto
Atributos da classe, neste caso
private garante o encapsulamento
dos 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
33
Programação JAVA
Criar classes em Java
O construtor é invocado sempre que
se cria um novo objecto da classe
Ponto p1;
Ponto
p1 é referência para
instâncias
da classe Ponto
p1 = new Ponto();
O novo objecto é criado, a sua referência fica com p1.
De acordo com o exemplo, o construtor da classe coloca zero
nos atributos privados m_x e m_y
Java Introdução (c)AB,2000
34
Programação JAVA
Criar classes em Java
public class Ponto
{
private int m_x;
private int m_y;
public Ponto()
{
m_x = 0;
m_y = 0;
}
Construtor alternativo da classe Ponto
Passa a ser possível criar objectos
da classe Ponto com valores iniciais
Exemplo:
Ponto p1 = new Ponto( 10, 5);
public Ponto(int x, int y)
{
m_x = x;
m_y = y;
}
Ponto
}
Java Introdução (c)AB,2000
35
Programação JAVA
Criar 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;
}
Ponto
Problema
Os atributos de Ponto são privados.
Como pode o “mundo exterior” obter
os valores de m_x e m_y respeitando
o princípio do encapsulamento da
informação?
}
Java Introdução (c)AB,2000
36
Programação JAVA
Criar classes em Java
Ponto
public class Ponto
{
private int m_x;
private int m_y;
Uma solução possível:
public Ponto()
{ m_x = 0; m_y = 0; }
public Ponto(int x, int y) { m_x = x; m_y = y; }
criar métodos de acesso
público para obtenção
dos valores dos atributos
public int X()
{
return m_x;
}
public int Y()
{
return m_y;
}
}
Java Introdução (c)AB,2000
37
Programação JAVA
Criar classes em Java
Novo Problema
public class Ponto
{
private int m_x;
private int m_y;
Possibilitar a colocação
de valores em
m_x e m_y
a partir de mensagens
enviadas aos objectos
da classe Ponto.
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;
}
Ponto
}
Java Introdução (c)AB,2000
38
Programação JAVA
Criar classes em Java
public class Ponto
{
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; }
Preparar métodos
públicos de
atribuição
de valores a m_x e m_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;
}
É uma responsabilidade
da classe efectuar estas
operações...
}
Java Introdução (c)AB,2000
39
Programação JAVA
Criar classes em Java
public class Ponto
{
Exemplo:
private int m_x;
private int m_y;
Ponto p1 = new Ponto();
Ponto p2 = new Ponto(2,3);
public Ponto()
{ m_x = 0; m_y = 0; }
public Ponto(int x, int y) { m_x = x; m_y = y; }
p1.X(4);
p1.Y(8);
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;
}
int a;
4
a = p1.X();
4
p2.X( a );
8
p2.Y( p1.Y() );
}
Java Introdução (c)AB,2000
40
Programação JAVA
Criar classes em Java
Instanciar objectos
da classe Ponto
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);
Neste caso foram criados 8 novos
objectos da classe Ponto, no entanto,
fica apenas referenciado o último
ponto em p
Perdem-se todas as referências
anteriores
p só guarda a última referência atribuída
O que acontece aos outros objectos
que nasceram e estão perdidos?
Java Introdução (c)AB,2000
41
Programação JAVA
Criar classes em Java
GC
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);
O que acontece aos outros objectos
que 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
42
Programação JAVA
Criar classes em Java
A referência this
Exemplo:
class Conta
{
double m_saldo;
Sempre que um método
faz uma referência não
qualificada a outro membro
da mesma classe, existe
uma referência implícita
a this.
Conta() {
m_saldo = 0.0; // equivalente a this.m_saldo=0.0;
}
}
Java Introdução (c)AB,2000
43
Programação JAVA
Classes em Java, Herança
class A
{
A
// ...
}
class B extends A
{
B
// ...
}
Java Introdução (c)AB,2000
44
Programação JAVA
A 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
45
Programação JAVA
A 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 actual
Class.toString devolve o nome da classe
toString, devolve uma descrição Unicode do objecto.
Object.toString devolve o endereço do objecto, no entanto
outras classes sobrecarregam toString para proporcionar
uma descrição mais útil do objecto Class
Java Introdução (c)AB,2000
46
Programação JAVA
A 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 caracteres
dinamicamente dimensionável
(ex métodos: append, insert,…)
Java Introdução (c)AB,2000
47
Programação JAVA
A classe System
A classe System proporciona uma interface independente
do sistema para algumas funções gerais
in, out e err são as funcionalidades mais úteis de System
Objectos padrão de E/S
Objecto
System.in
System.out
System.err
Tipo
BufferedInputStream
PrintStream
PrintStream
Descrição
entrada-padrão (normalmente teclado)
saída-padrão (normalmente ecrã)
saída de erro (normalmente ecrã)
Java Introdução (c)AB,2000
48
Programação JAVA
Blocos try/catch
Controlo/Tratamento de erros através de excepções
class A
{
// ...
public double Divide(double d1, double d2)
{
if ( d2 == 0 ) {
throw new Exception(“Divisão por zero!”);
}
return ( d1 / d2 );
}
}
try
{
// instruções…
a = 50;
b=0;
objecto.Divide(a,b);
}
catch (Exception e)
{
// visualização, situação de erro...
}
Java Introdução (c)AB,2000
49
Programação JAVA
interfaces
Uma interface permite ao programador descrever uma série
de capacidades que uma classe deve implementar
interface ipersistente
{
void Store();
void Restore();
}
class B extends A implements ipersistente
{
// … definir na classe Store() e Restore()
}
Uma classe que implementa uma
interface não está a herdar nada
apenas promete implementar os
métodos definidos na interface
Uma classe realiza uma
interface utilizando
a palavra-chave implements
Java Introdução (c)AB,2000
50
Programação JAVA
Pacotes 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
51
Programação JAVA
Pacotes Java: packages
Adicionar uma classe a uma package:
package edu.escola;
public class Aluno
{
// instruções….
}
Java Introdução (c)AB,2000
52
Programação JAVA
Pacotes 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
53
Programação JAVA
Pacotes 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
54
Programação JAVA
Pacotes 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
55
Programação JAVA
Exemplo
O pacote java.io,
a classe System
e 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
56
Programação JAVA
AWT
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õem
o package AWT é a Component
Java Introdução (c)AB,2000
57
Programação JAVA
AWT
Component
Button
Container
Canvas
Window
Checkbox
Panel
Label
List
Dialog
Frame
Applet
Scrollbar
TextComponent
FileDialog
TextArea
TextField
Subclasses de Component (super-classe da maioria das classes do AWT)
Java Introdução (c)AB,2000
58
Programação JAVA
AWT
Exemplo:
Applet
Label
Button
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);
TextField
public void init()
{
add ( m_label );
add ( m_botao );
add ( m_campoTexto );
}
}
Java Introdução (c)AB,2000
59
Programação JAVA
AWT
Nota: o layout por defeito neste caso é FlowLayout
Java Introdução (c)AB,2000
60
Programação JAVA
AWT
Principais formas de Layout (apresentação dos componentes)
FlowLayout Os componentes são posicionados da
esquerda para a direita pela ordem em
que estão ligados
BorderLayout Permite posicionar componentes relativamente
aos limites da janela (North, South, East, West e Center)
GridLayout Os componentes são posicionados numa filosofia
de grelha
Nota: o método setLayout da Applet permite mudar o layout
Java Introdução (c)AB,2000
61
Programação JAVA
AWT
Exemplo #1:
utilização de BorderLayout
// exemplo anterior (Applet1)
// ...
public void init()
{
setLayout(new BorderLayout());
Aos objectos North e South
é atribuído o espaço vertical
necessário.
add ( "North", m_label );
add ( "Center", m_campoTexto );
add ( "South", m_botao );
Aos objectos West e East é
atribuído o espaço horizontal
necessário dentro de qualquer
espaço vertical que ainda reste
}
Aos objectos Center é atribuído
o restante espaço
// ...
Java Introdução (c)AB,2000
62
Programação JAVA
AWT
Exemplo #1: utilização de BorderLayout
Java Introdução (c)AB,2000
63
Programação JAVA
AWT
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
64
Programação JAVA
AWT
Paineis
GridLayout ( 4, 1 )
1
2
3
4
Java Introdução (c)AB,2000
65
Programação JAVA
AWT
Paineis
painel
m_painelTiposConta
painel
m_painelValor
painel
m_painelOperacoes
zona para Label
sem painel
p1
Java Introdução (c)AB,2000
66
Programação JAVA
AWT
Paineis
FlowLayout
FlowLayout
BorderLayout
GridLayout ( 1, 2)
Java Introdução (c)AB,2000
67
Programação JAVA
Painéis e outros componentes
AWT
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);
Java Introdução (c)AB,2000
68
Programação JAVA
Painéis e outros componentes
AWT
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);
// ...
Java Introdução (c)AB,2000
69
Programação JAVA
Painéis e outros componentes
AWT
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
70
Programação JAVA
Painéis e outros componentes
AWT
setLayout(new GridLayout(4,1));
add ( m_painelTiposConta );
add ( m_painelValor );
add ( m_painelOperacoes );
add ( m_labelMsg );
Java Introdução (c)AB,2000
71
Programação JAVA
Interceptar eventos em Applets
AWT
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
72
Programação JAVA
Interceptar eventos em Applets
AWT
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...
Java Introdução (c)AB,2000
73
Programação JAVA
Interceptar eventos em Applets
AWT
//..
public void init()
{
setLayout(new BorderLayout());
add ( "North", m_label );
add ( "Center", m_campoTexto );
add ( "South", m_botao );
m_botao.addActionListener(this);
}
// ...
Java Introdução (c)AB,2000
74
Programação JAVA
Interceptar eventos em Applets
AWT
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
75
Programação JAVA
Interceptar eventos em Applets
AWT
Ou de uma forma mais simples...
public void actionPerformed(ActionEvent evento)
{
if ( evento.getSource() == m_botaoLimpar )
{
m_campoTexto.setText("");
}
}
}
// fim da classe Applet1
Java Introdução (c)AB,2000
76
Programação JAVA
Funcionalidades gráficas em Applets
Classe Graphics
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
77
Programação JAVA
Funcionalidades gráficas em Applets
Classe Graphics
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);
x
y
g.setColor(Color.black);
g.drawLine(10,25, 110, 25);
}
Java Introdução (c)AB,2000
78
Na WWW…
Sobre Java
www.sun.com
www.javasoft.com
sunsite.unc.edu/javafaq
www.gamelan.com
subsidiária da Sun
ligações a outros sites Java
www.programmingtutorials.com
Java Introdução (c)AB,2000
79
Download

Sobre Java