Introdução à Linguagem
Java com JCreator
Christien L. Rachid
UNIPAC
E-Mail: [email protected]
URL: http://www.christienrachid.xpg.com.br
Plano do Capítulo
• Fases da Programação
• Ambientes Integrados de Desenvolvimento (IDE)
– JCreator 3.50 LE
• Introdução à Linguagem Java (Revisão)
2
Fases da Programação Java
Fase 1
Editor
Disco
Programa é criado no
editor e armazenado em
disco.
Disco
Compilador cria
bytecodes e os
armazena em disco.
Fase 2
Compilador
.
Fase 3
Carregador
de Classes
Memória Principal
Carregador de classe
coloca bytecodes na
memória.
Disco
3
...
Fases da Programação Java
.
Fase 4
Verificador de
bytecodes
Memória Principal
Verificador de
bytecodes confirma
que todos os
bytecodes são válidos
e não violam restrições
de segurança do Java
...
.
Fase 5
Intepretador
Memória Principal
...
4
Interpretador lê os
bytecodes e os traduz
para uma linguagem
que o computador
pode entender,
possivelmente
armazenando valores
dos dados enquanto
executa o programa.
Ambientes Integrados de Desenvolvimento (IDE)
• Editores de texto com suporte a programação Java
– jEdit, SciTE, tsWebEditor, Crimson Editor, ConTEXT Programmers
editor, JEXT Java Text Editor, JED, Programmer’s File Editor
(PFE)
• IDEs Básicos
– JCreator Lite Edition (LE) (Gratuito)
• URL: http://www.jcreator.com/
– Gel (Gratuito)
• URL: http://www.gexperts.com/
• Desenvolvimento está suspenso desde meados de 2004
5
Ambientes Integrados de Desenvolvimento (IDE)
• IDEs Avançados
– Eclipse
• URL: http://www.eclipse.org
– NetBeans
• URL: http://www.netbeans.org
– JBuilder
• URL: http://www.borland.com
– Jdeveloper 10g
• URL: http://www.oracle.com.br
6
JCreator 3.50 LE
• Porque adotamos
– Pequeno tamanho (2,21 MB - Instalador), rápida carga, simples
• Não requer abertura de Prompt de comando, nem uso de comandos
do DOS para compilar ou executar os programas Java, estes são
executados diretamente, através de menus ou ícones
• ajudam a superar limitações em comparação com outras IDE mais
sofisticadas
• Facilita o trabalho do programador iniciante em Java
– Apresenta vários recursos que facilitam o trabalho de
desenvolvimento
7
JCreator 3.50 LE
• Requisitos
– Instalação do JDK (6.0):
• http://java.sun.com/javase/downloads/index.jsp
• Contém as ferramentas para trabalharmos com o Java
(compiladores, viewers, etc).
• Contém o ambiente de execução Java (JRE)
– Documentação da linguagem Java. (J2SE 6.0 Documentation)
• http://java.sun.com/javase/downloads/index.jsp
• Pode ser integrada na IDE, facilitando a consulta a dúvidas na
linguagem.
– Instalação do JCreator Lite Edition (LE)
• URL: http://www.jcreator.com/
8
JCreator 3.50 LE: Interface
Estrutura de
arquivos e pastas
Edição do código
fonte
Mostra as
propriedades do
arquivo
Apresenta erros
de compilação
9
JCreator 3.50 LE: Workspaces e Projetos
• Projetos
– Modo na qual JCreator organiza os arquivos de programa
• JCreator cria uma pasta onde todos os arquivos do programa são
mantidos para um projeto particular (p.e. Exercicio1, Exercicio2)
• Permite que arquivos de diferentes projetos estejam em diferentes
pastas
10
JCreator 3.50 LE: Workspaces e Projetos
• Workspaces
– Workspace é outra pasta
• Contém um certo número de projetos
• Por exemplo, pode-se criar um workspace chamado Semana1 com
os projetos Exercicio1 e Exercicio2
– Workspaces e Projetos facilitam a organização do trabalho
11
JCreator 3.50 LE: Workspaces e Projetos
• Criando um workplace
12
JCreator 3.50 LE: Workspaces e Projetos
• Criando um projeto
13
JCreator 3.50 LE: « Ola Mundo »
14
Arquivos Fonte
• Extensão .java
• Pode conter diversas classes
– Uma ÚNICA pode ser pública (public)
• Mesmo nome que a classe pública mais a extensão .java
15
Arquivos Fonte
• Pode conter 3 elementos:
1) Declaração de pacote
2) Sentenças de importação
3) Definição de classes
– Devem obedecer essa ordem
16
opcional
obrigatório
Classes e Pacotes
• Classes
– Agrupam definições de atributos, construtores e métodos
• Pacotes
– Agrupam definições de classes relacionadas
• Pacotes facilitam a localização das classes
– Definição: Coleção de unidades de compilação relacionadas,
permitindo:
• Controle de acesso
– Um atributo ou método protegido só fica visível dentro do pacote
• Gerência do espaço de nomes
– Duas classes no mesmo pacote não podem ter o mesmo nome
17
Palavras Reservadas
Palavras-chaves Java
abstract
assert
boolean
break
case
catch
char
class
default
do
double
else
final
finally float
for
implements import
instanceof int
long
native
new
package
protected public
return
short
strictfp
super
switch
synchronized
throw
throws
transient try
volatile
while
Palavras-chaves reservadas, mas não utilizadas
const
goto
byte
continue
extends
if
interface
private
static
this
void
• Como toda linguagem, Java possui identificadores reservados
para comandos que permitem a execução de suas instruções
• IMPORTANTE: você não pode utilizar palavras-chave Java como
nome de variáveis ou classes.
18
Aplicação Ola Mundo
1
2 // Relembrando a estrutura de um programa Java
3
4 public class OlaMundo {
5
6
/**
7
* IMPRIME NO CONSOLE "OLA MUNDO"
8
*/
9
10
public static void main(String[] args) {
11
12
13
14 }
19
15
System.out.println("Ola Mundo");
}
Comentários
2 // Relembrando a estrutura de um programa Java
• Comentários
– /* texto */
• O compilador ignora tudo entre /* e */
– /** documentacao */
• Indica um comentário para documentação.
• Utilizado pela ferramenta javadoc
– // texto
• Compilador ignora todos os caracteres de // até o final da linha
20
Classes
4 public class OlaMundo {
• Início da declaração da classe OlaMundo
– Todo programa Java tem ao menos uma classe definida pelo
usuário
– Palavra-chave: palavras reservadas para uso da linguagem
• Palavra-chave <class> seguida pelo nome da classe
class NomeDaClasse {
// aqui vai o código
}
21
Classes
4 public class OlaMundo {
• Início da declaração da classe OlaMundo
– Nome da Classe: identificador
• Série de caracteres formados por letras, digitos, underscores (_) e
dollar ($)
• Não comece com dígitos e não utilise espaços
• Exemplos: BemVindo1, $valor, _valor, botao7
– 7botao não é válido
• Java é case sensitive
– a1 e A1 são diferentes
• Capitalize todas as palavra (e.g. MinhaClasse)
– Por enquanto use sempre a palavra-chave: public
• Visto mais adiante
22
Classes
4 public class OlaMundo {
• Nome do arquivo
– Arquivo deve ter o mesmo nome da classe com a extensão .java
– OlaMundo.java
– Chaves {
• Início do corpo de toda classe
• } fecha a declaração da classe (linha 14)
23
Ola Mundo: método main
Define main() como
método de classe
Declaração de tipo dos argumentos:
java Oi "c:\softs" "www.sun.com"

Oi.main({"c:\softs","www.sun.com"})
class OlaMundo {
public static void main(String[] args)
{
}
...
...
...
}
Seqüência de declarações definindo
o comportamento do método
24
Ola Mundo: método main
10
public static void main(String[] args) {
• Partida de toda aplicação Java
– Aplicação começa a execução com o método main
– Apenas um método main por aplicação
– Nesta assinatura:
• public indica que o método pode ser chamado por qualquer objeto.
• static indica que o método pode ser chamado mesmo que nenhuma
instância da classe tenha sido criada.
• void indica que o método não retorna nenhum valor.
– Chaves
• { -> Início do corpo de todo método
• } -> fecha a declaração do método (linha 13)
25
Ola Mundo: método main
10
public static void main(String[] args) {
• Argumentos do método
– Os argumentos de um método em Java sempre aparecem na
assinatura após o nome do método, dentro de parênteses.
– A declaração do argumento é sempre do tipo (TipoDoArgumento
nomeDoArgumento).
– Múltiplos argumentos são separados por vírgula, como em (Tipo1
arg1, Tipo2 arg2).
– Métodos sem argumentos devem ter na assinatura um () após o
nome.
– No caso específico do método main, o argumento é um array de
Strings, que pode ser utilizado para execução com opções de
inicialização.
26
Ola Mundo: método main
// Explorando nosso primeiro programa Java
// Passando Argumentos na execução do programa
public class MeuPrimeiroPrograma4 {
// o método main inicia a execução do aplicativo Java
public static void main (String arg[]) {
System.out.print("\n\nImprimindo o que você digitou\n ");
System.out.println(arg[0]);
} // fim do método main
} // fim da classe MeuPrimeiroPrograma
27
Ola Mundo: System.out
12
System.out.println("Ola Mundo");
• Imprime uma string de caracteres
– System.out
• Objeto de saída padrão
• Imprime na janela de comando (i.e., prompt MS-DOS)
– Método System.out.println
• Apresenta uma linha de texto
• Argumento dentro de parênteses
– Esta linha é conhecida como instrução
• Instruções devem terminar com;
28
Ola Mundo: System.out
12
System.out.println("Ola Mundo");
• Imprime uma string de caracteres
– A aplicação usa a variável out da classe System, da
API Java, para mostrar uma mensagem na tela.
• out é um objeto da classe java.io.PrintStream.
• Println é um método da Classe PrintStream que mostra um
string na tela de console.
– Nenhum objeto precisou ser criado nesta chamada
• tanto a variável out quanto o método println são estáticos
(static).
29
Caracteres especiais
• Backslash ( \ )
– Indica um caractere especial
Sequencia Descrição
\n
Linha nova
\t
Tab Horizontal
\r
Carriage return
\\
Backslash
\"
Double quote, exemplo
System.out.println( "\"in quotes\"" );
apresenta
"in quotes"
30
Importando Pacotes
import java.util.Scanner;
• Palavra-chave import
– Usada para declarar uso de uma classe Scanner do pacote
java.util
• Pacotes (Packages)
– Conjunto de classes relacionadas é chamado de pacote
• Grupo de todos os pacotes é conhecido como biblioteca de classe
java ou Java API (Java applications programming interface)
– Scanner está no pacote java.util
– Os nomes dos pacotes Java começam com Java (pacotes do
núcleo da linguagem) ou Javax (extensões ao núcleo)
31
Importando Pacotes
• Exemplos de pacotes Java:
– java.lang: Tipos e funcionalidades básicas da linguagem. Inclui,
entre outras, as classes String, Math, Integer e Thread. É
importada automaticamente em seus programas Java;
– java.awt: componentes gráficos originais da linguagem (Abstract
Window Toolkit);
– javax.swing: pacote de extensão aos componentes gráficos com
melhoramentos à biblioteca AWT
– java.applet: classes específicas para tratamento de applets;
– java.net: recursos de rede (sockets e URLs);
– java.io: classes para escrita e leitura em arquivos;
– java.util: classes para tarefas gerais, tais como vetores e string
de tokens.
32
Importando Pacotes
• Nome completo de uma classe: nome do pacote + nome da classe
– Ex.: java.lang.String -> nome completo da classe String
• Sentença import:
– Permite a utilização de membros de pacotes sem a necessidade de
referenciá-los a partir do seu nome completo
– import <nome completo da classe>
• A importação pode ser de:
– Apenas um membro do pacote
• Ex.: import java.awt.Button;
– Todos os membros do pacote
• Ex.: import java.util.*;
• Se não forem usadas todas as classes desse pacote, o compilador vai
descobrir quais foram as classes usadas e as importá-las em tempo de
compilação
– O pacote java.lang é sempre importado
• import java.lang.*;
33
Declarando variáveis
int numero1; // declara variável: primeiro numero a somar
int numero2; // declara variável: segundo numero a somar
int soma; // declara variável: soma de numero1 com numero2
• Declaração de Variáveis
– Tipo identificador [ = valorInicial ]
– Tipo identificador1, identificador2, identificador3;
• Tipos de dados primitivos
– Inteiros: byte / short / int / long
– Reais:
float / double
– Outros: char / boolean
• Nomes de variáveis
– Série de caracteres Unicode
– Não pode ser palavra chave
– Não pode ser nome de outra variável ou classe
34
Tipos Primitivos
Tipo
Tamanho
em bits
boolean
35
Valores
Padrão
true ou false
char
16
byte
8
short
16
int
32
long
64
float
32
double
64
[Nota: A representação de un boleano é
especifico de JVM em cada plataforma]
'\u0000' a '\uFFFF'
(0 a 65535)
–128 a +127
(–27 a 27 – 1)
–32,768 a +32,767
(–215 a 215 – 1)
–2,147,483,648 a +2,147,483,647
(–231 a 231 – 1)
–9,223,372,036,854,775,808 a
+9,223,372,036,854,775,807
(–263 a 263 – 1)
Faixa negativa:
–3.4028234663852886E+38 a
–1.40129846432481707e–45
Faixa positiva:
1.40129846432481707e–45 a
3.4028234663852886E+38
Faixa negativa:
–1.7976931348623157E+308 a
–4.94065645841246544e–324
Faixa positiva:
4.94065645841246544e–324 a
1.7976931348623157E+308
(ISO Unicode character set)
(IEEE 754 floating point)
(IEEE 754 floating point)
Tipos Primitivos
• Inteiros e seus Operadores
Operador
Comentários
-
Menos unário
~
Inversão do padrão de bits, ou not bit-a-bit
++ -+ -
Incremento e Decremento
Adição e Subtração
* / %
Multiplicação, Divisão e Resto
& | ^
AND, OR e XOR
<< >>
Deslocamento de Bits
> < <= >= == !=
Relacionais, comparam valores e produzem true ou
false
36
Tipos primitivos
• Operadores de Incremento e Decremento
Operador
37
Chamado de
++
pré-incremento
++
pós-incremento
--
pré-decremento
--
pós-decremento
Expressão exemplo
Explicação
Incrementa 'a' por 1, depois utiliza o novo valor
de 'a' na expressão em que 'a' reside.
++a
Utiliza o valor atual de 'a' na expressão em que
'a' reside, depois incrementa 'a' por 1
a++
Decrementa 'b' por 1, depois utiliza o novo
valor de 'b' na expressão em que 'b' reside.
--b
Utiliza o valor atual de 'b' na expressão em que
'b' reside, depois decrementa 'b' por 1
b--
Tipos primitivos
• Operadores Aritméticos de Atribuição
Operador de
atribuição
+=
-=
*=
/=
%=
Exemplo
c += 7
d -= 4
e *= 5
f /= 3
g %=9
Exemplificação
c=c+7
d=d-4
e=e*5
f=f/3
g=g%9
Atribui
10 a c
1ad
20 a e
2af
3ag
Exemplos: int c = 3, d = 5, e = 4, f = 6, g = 12
• Java fornece vários operadores que abreviam as expressões de
atribuição;
38
• A simplificação de sintaxe não é a única vantagem desses
operadores. Eles aumentam a velocidade de acesso às variáveis
em programas.
Tipos primitivos
• Ponto Flutuante e operações
float (32 bits)
double (64 bits)
Operador
Comentários
-
Menos unário
++ -+ * / %
> < <= >= == !=
Incremento e Decremento
Adição e Subtração
Multiplicação, Divisão e Resto
Relacionais, comparam valores e produzem true ou
false
39
Tipos primitivos
• Booleanos
– true, false
Operador
!
Negação Lógica (NOT)
&& ||
&
Comentários
|
AND e OR
AND e OR, (executa obrigatoriamente os dois lados da
expressão, ainda que isso não seja necessário para avaliar
a expressão)
== !=
?:
Igualdade e ‘não Igualdade’
Ternário  HrIncial = (Turno == Manhã ? 7 : 13)
//equivalente:
if (Turno == Manhã) HrIncial = 7;
40
else HrIncial = 13;
Tipos primitivos
• Caracteres e operadores
char
Um único caractete Unicode (16 bits)
String
Classe que tem uma seqüência de chars
Operador
[]
Comentários
Indexação (zero...n)
se X=“JAVA” então X[2]=‘V’
+
41
Concatenação
Conversões
re 6.5. Promotions allowed for primitive types.
• Promoções de Tipo
– Conversões “inofensivas” (que não apresentam nenhum risco de
erro) são aceitas implicitamente pelo compilador.
42
Tipo
Promoções válidas
double
None
float
double
long
float ou double
int
long, float ou double
char
int, long, float ou double
short
int, long, float ou double (mas não char)
byte
short, int, long, float ou double (mas não char)
boolean
None (não podem ser considerados números em Java)
Conversões
• Conversões
– Conversões com possível perda de dados devem ser feitas
explicitamente (truncamento)
• float para int
• double para long
• long para int
43
...
int i ;
float f ;
String s ;
...
f = i; //promoção
i = (int)f; //explicita
...
Tipos Referência
• Tipos Referência
– Todos os demais tipos de Java!
– Definidos a partir de declarações de classes
– Quando uma variável em Java é declarada como sendo do tipo
de uma classe, esta variável é considerada como sendo do tipo
referência
– Declaração e inicialização:
• String str = “Entendendo Strings”;
• Banco brasil = new Banco (“Brasil”);
– Diferentemente das variáveis de tipos primitivos, que armazenam
um valor, variáveis do tipo referência armazenam um apontador
para um objeto em memória
44
Strings
• Strings
– São seqüências de caracteres delimitados por “”
– Representadas por instâncias da classe String (pacotes java.lang)
– Declaração e Inicialização:
• String saudacao = “Bom dia!”;
• Variável saudacao conterá um apontador (referência) para um
objeto do tipo String que estará em memória e que “armazenará” a
informação “Bom dia!”
– Exemplo:
String s1 = “string1”;
String s2 = “string2”;
String s3 = new String(“s1”);
char data[] = { ‘a’, ‘b’, ‘c’ };
String cc = “ab”+ “cde”;
– As strings podem ser concatenadas através do operador +
45
Strings
• Strings: Comparação
– Não use o operador == para comparar Strings
– O operador == testa referências quando utilizado com objetos,
ou seja, testa se os objetos apontam para mesma posição de
memória
– Use o método equals() da classe String
– Use o método equalsIgnoreCase() da classe String se não for
importante a caixa (maiúsculas ou minúsculas)
String nome = “Lisa”;
if(!nome.equals(“Bart”))
If(“Lisa”.equals(nome))
46
Classe Math
• Expressões Matemáticas
– Os métodos da classe Math permitem realizar cálculos comuns
necessários em expressões matemáticas.
– Exemplos de chamadas de métodos da classe Math:
• Função raiz quadrada: double y = Math.sqrt(10.0);
• Função mínimo: double z = Math.min(x,10);
• Os métodos da classe Math são métodos estáticos
– não necessitam de objetos da classe para sua chamada
– você deve preceder as chamadas dos métodos com o nome da
classe seguido de ponto
47
Classe Math
• Chamada de Métodos
– Métodos podem ser chamados em declarações de variáveis ou
como parâmetros de outros métodos
• float z = Math.sqrt(4.0*x);
• System.out.println(Math.sqrt(x+y*f));
• A classe Math possui duas constantes importantes em
programas matemáticos:
– Math.E = 2.7282818284590452354
// valor base de logaritmos naturais
– Math.PI = 3.14159265358979323846
// relação entre a circunferência e o diâmetro de círculos
48
Classe Math
Método
abs( x )
ceil ( x )
cos( x )
exp( x )
floor( x )
log( x )
Exemplo
valor absoluto de x (tem versões para
abs(23.7) é 23.7; abs(0.0) é 0.0; abs(-23.7) é 23.7
float, int e log)
arredonda o valor de x para o menor
inteiro não menor que x
co-seno trigonométrico de x (x em
radianos)
x
método esponencial e
arredonda o valor de x para o maior
inteiro não maior que x
logaritmo natural de x (base e)
ceil(9.2) é 10.0; ceil (-9.8) é -9.0;
cos(0.0) é 1.0
exp(1.0) é 2.718281828
floor(9.2) é 9.0; floor(-9.8) é -10.0
log(2.718282) é 1.0; log(7.389056) é 2.0
max( x, y )
maior valor entre x e y (também em
versões para float, int e long)
max( 2.3, 12.7) é 12.7; max(-2.3;-12.7) é -2.3
min( x, y )
menor valor entre x e y (também em
versões para float, int e long)
min( 2.3, 12.7) é 2.3; min(-2.3;-12.7) é -12.7
pow( x, y )
sin( x )
sqrt( x )
tan( x )
49
Descrição
y
x elevado à potência y (x )
seno trigonométrico de x (x em
radianos)
raiz quadrada de x
tangente trigonométrica de x (x em
radianos)
pow(2.0, 7.0) é 128.0; pow(9.0,0.5) é 3.0
sin(0.0) é 0.0
sqrt(900.0) é 30.0; sqrt(9.0) é 3.0
tan(0.0) é 0.0
Leitura do Teclado
• Usando a classe java.util.Scanner (J2SE 5.0)
– Uma classe nova que permite converter um texto para tipos
primitivos
– Texto pode ser obtido das mais diversas fontes, como:
• Strings
• InputStream
• Arquivos
– Permite separar o texto em tokens, que são seqüências de
caracteres separados por delimitadores (default são espaço, tabs
e mudanças de linha).
50
Leitura do Teclado
• Para ler de forma confortável texto do canal de entrada padrão
– É preciso criar primeiro um Scanner sobre canal System.in que esta
associado ao teclado
Scanner input = new Scanner(System.in);
• Para cada um dos tipos primitivos há um método correspondente
com a assinatura nextXxx() que retorne um valor desse tipo.
– Se a string não puder ser interpretada como sendo deste tipo, é lançado
uma excepção do tipo InputMismatchException.
• Exemplos de algumas leituras de tokens:
51
– String aToken = sc.next() ;
//Lê um token
– int num1 = sc.nextInt() ;
//Lê um token inteiro
– double num2 = sc.nextDouble() ;
//Lê um token real
– String linha = sc.nextLine() ;
//Lê uma linha
Impressão Formatada dados formatados
• Printf
– Primeiro argumento é a string formatada (texto fixo e
especificadores de formato)
– Especificadores de formato começam com (%) e são seguidos
por um caractere que representa o tipo de dado
• %s para uma string
– System.out.printf( "%s\n%s\n", " Bem vindo", " a Java!" );
• %d para um decimal
• %f para um número ponto flutuante
System.out.printf( "A soma eh %d\n", soma ); // apresenta soma
52
Exemplo 2: Soma
// Programa de adição que apresenta a soma de dois números.
import java.util.Scanner; // programa usa a classe Scanner da package java.util
public class Soma {
// método main inicia a execução da aplicação Java
public static void main( String args[] ) {
// cria objeto da classe Scanner para obter entradas do teclado
Scanner input = new Scanner( System.in );
int numero1; // declara variável: primeiro numero a somar
int numero2; // declara variável: segundo numero a somar
int soma; // declara variável: soma de numero1 com numero2
System.out.print( "Digite o primeiro inteiro: " ); // prompt
numero1 = input.nextInt(); // lê primeiro número via método nextInt da classe Scanner
System.out.print( "Digite o segundo inteiro: " ); // prompt
numero2 = input.nextInt(); // lê segundo numero
soma = numero1 + numero2; // adiciona números
System.out.printf( "A soma eh %d\n", soma ); // apresenta soma
} // fim do metodo main
53
} // fim da classe Soma
Prática
• Exercício 1
– Faça um programa que calcula a média de três números reais
digitados pelo usuário
• Utilize a classe Scanner e printf
54
Caixa de Dialogo: Caixa de Mensagem
• Classe JOptionPane
– Oferece caixas de diálogo pré-empacotadas que permitem aos
programas apresentarem janelas contendo mensagens para o
usuário
– Faz parte do pacote javax.swing
• Pacote que contém várias classes que ajudam o programador a criar
GUIs (Graphical User Interfaces)
// Imprime linhas na caixa de dialogo
import javax.swing.JOptionPane; // importa classe JOptionPane
public class Dialog1 {
public static void main( String args[] ) {
// apresenta um dialogo com a mensagem
JOptionPane.showMessageDialog( null, « Bem vindo\na\nJava" );
}
}
55
Caixa de Dialogo: Caixa de Mensagem
• Classe JOptionPane
– Método JOptionPane.showMessageDialog
• Método estático: não requer a instanciação de um objeto
• Argumentos
– Primeiro usado para posicionamento na tela
» Null para colocar a caixa no centro da tela do frame default
– Segundo é a String a apresentar
// Imprime linhas na caixa de dialogo
import javax.swing.JOptionPane; // importa classe JOptionPane
public class Dialog1 {
public static void main( String args[] ) {
// apresenta um dialogo com a mensagem
JOptionPane.showMessageDialog( null, « Bem vindo\na\nJava" );
}
}
56
Caixa de Dialogo: Caixa de Mensagem
• Classe JOptionPane
– Método JOptionPane.showMessageDialog
• Argumentos
– Primeiro usado para posicionamento na tela
» Null para colocar a caixa no centro da tela do frame default
– Segundo é a String a apresentar
– Terceiro é o titulo da janela
– Quarto é o tipo de mensagem
57
// Imprime linhas na caixa de dialogo
import javax.swing.JOptionPane; // importa classe JOptionPane
public class Dialog2 {
public static void main( String args[] ) {
// apresenta um dialogo com a mensagem
JOptionPane.showMessageDialog( null, "Bem vindo\na\nJava" ,
"Titulo", JOptionPane.INFORMATION_MESSAGE);
}
}
Caixa de Dialogo: Digitando texto
• Classe JOptionPane
– Método JOptionPane.showInputDialog
58
import javax.swing.JOptionPane;
public class BoasVindas {
public static void main( String args[] ) {
// solicita a digitação do nome
String nome = JOptionPane.showInputDialog("Qual é seu nome?" );
// cria a mensagem
String mensagem = String.format("Bem vindo, %s, a Desenvolvimento
orientado a objetos!", nome );
// Apresenta a mensagem de boas vindas
JOptionPane.showMessageDialog( null, mensagem );
}
}
Caixa de Dialogo: Digitando texto
• Método showInputDialog()
– Variáveis informadas aos programas Java são sempre Strings que
devem ser convertidas.
– Erros de entradas inesperadas (tipos incompatíveis com as
conversões) devem ser tratados pelo usuário (veremos como em
tratamento de exceções).
import javax.swing.JOptionPane;
public class EntradaInteiro {
public static void main( String args[] ) {
// solicita a digitação do nome
String sInt = JOptionPane.showInputDialog(« Digite Inteiro?" );
// cria a mensagem
int numero = Integer.parseInt( sInt);
}
}
59
Exercícios
60
1.
Modifique o programa de adição de maneira a utilizar entradas baseada em
diálogos com JOptionPane em vez da entrada baseada em console
2.
Escreva uma instrução (ou comentário) para realizar cada uma das
seguintes tarefas:
a)
Declarar que um programa calculará o produto de três inteiros
b)
Declarar as variáveis x,y e z e resultado como tipo int
c)
Declarar as variáveis xVal, yVal e zVal como do tipo String
d)
Solicitar ao usuário para inserir o 1o valor, ler o valor e armazenar em xVal
e)
Solicitar ao usuário para inserir o 1o valor, ler o valor e armazenar em yVal
f)
Solicitar ao usuário para inserir o 1o valor, ler o valor e armazenar em zVal
g)
Converter xVal em um int e armazenar o resultado na variável x
h)
Converter yVal em um int e armazenar o resultado na variável y
i)
Converter zVal em um int e armazenar o resultado na variável z
j)
Computar o produto dos três inteiros contidos em x,y e z e atribuir o resultado à variável resultado
k)
Exibir um diálogo contendo a mensagem “O Produto é” seguindo do valor da variável resultado
l)
Retornar um valor a partir do programa para indicar que o mesmo foi finalizado com sucesso.