Buscar

EDO0400_11

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LINGUAGEM DE PROGRAMAÇÃO - EDO0400
Semana Aula: 11
Unidade 5 - Introdução à interface gráfica
Tema
Introdução à interface gráfica
Palavras-chave
Interface gráfica (GUI), swing, awt, gerenciador de layout
Objetivos
O aluno deverá ser capaz de:
 Compreender o papel dos pacotes swing e awt na construção de interfaces 
gráficas.
 Conhecer a hierarquia de classes com a principais classes do awt e swing.
 Conhecer a classe JOptionPane e seus métodos e realizar aplicações.
 Conhecer métodos de conversão e realizar aplicações.
 Conhecer e escrever aplicações com as classes JFrame, JPanel, JLabel, 
JTextField, JButton e seus principais métodos.
 Conhecer e realizar aplicações com o gerenciador de layout FlowLayout.
Estrutura de Conteúdo
 Visão geral do swing e awt
 Hierarquia de classes
 Classe JOptionPane e métodos showMessageDialog e showInputDialog. 
 Conversão com parseInt, parseFloat e parseDouble
 Classes JFrame, JPanel, JLabel, JTextField, JButton, os construtores e métodos 
especificados a seguir.
 Gerenciador de layout : FlowLayout . Método setLayout.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Detalhando <<<<<<<<<<<<<<<<<<<< 
<<<<<<<<<<<
Visão geral do swing e awt
 
 Uma interface gráfica com o usuário ou GUI (lê-se : ?gui?) fornece um mecanismo 
amigável ao usuário para interagir com o aplicativo.
 Exemplo de GUI : janela do Internet Explorer
 As GUIs são construídas a partir de componentes GUI. Tais componentes são 
chamados às vezes de controles ou widgets (abrevia-se : window gadgets).
 Um componente GUI é um objeto com que o usuário interage via mouse, teclado ou 
outro formulário de entrada, como reconhecimento de voz.
 JFC (Java Foundation Classes) é um conjunto de componentes e serviços GUI que 
simplificam o desenvolvimento de aplicações para desktop e para internet/intranet.
 
 JFC contém AWT (Abstract Window Toolkit) e Swing.
Exemplo: 
import javax.swing.JOptionPane; 
 public class Mensagem { 
 public static void main (String[] args)
 {
 //comando para a caixa de diálogo
 JOptionPane.showMessageDialog(null, ?Esta é uma mensagem !?);
 //saída obrigatória do sistema
 System.exit(0);
 }
}
 
 A maioria dos componentes swing são componentes Java puros, ou seja, são escritos, 
manipulados e exibidos em Java. Eles fazem parte do JFC (Java Foundation Classes), que 
representa bibliotecas do Java para desenvolvimento GUI para várias plataformas.
 Exemplos de componentes : botão, campo de texto ...
 Antes do swing ter sido introduzido na versão 1.2, os GUIs do Java eram construídas 
com componentes do Abstract Window Toolkit (AWT) do pacote java.awt.
 Quando um aplicativo Java com awt é executado em diferentes plataformas, os 
componentes são exibidos diferentemente em cada plataforma. Às vezes, a maneira como 
o usuário pode interagir com o componente awt particular difere entre as plataformas.
 Os componentes swing (botões, caixas de texto, etc...) permitem especificar 
uniformemente a aparência e o comportamento (look and feel) para o aplicativo em todas 
as plataformas ou utilizar a aparência e o comportamento personalizados de cada 
plataforma.
 Como os componentes swing são implementados em Java, são mais portáveis e flexíveis 
do que os componentes Java GUI originais do pacote java.awt.
 Os componentes Swing são conhecidos como componentes leves e os componentes 
AWT são conhecidos como componentes de peso, porque contam com o sistema de 
janela da plataforma local para determinar a funcionalidade, a aparência e o 
comportamento do aplicativo.
 
Hierarquia de classes
Object
 |_ Component (pacote java.awt)
 |_Container (pacote java.awt)
 |_JComponent (pacote javax.swing)
 
 Classe Component : declara muitos dos atributos e comportamentos comuns aos 
componentes GUI em pacotes java.awt e javax.swing.
 Classe JComponent : é superclasse de todos os componentes leves Swing e 
declara seus atributos e comportamentos comuns.
 
Classe JOptionPane
Métodos :
1) showMessageDialog
Exemplo 1 : JOptionPane.showMessageDialog(null, "Esta é uma mensagem !");
Exemplo 2 : JOptionPane.showMessageDialog(null, "Texto da Mensagem",
 "Titulo da janela criada", TIPOICONE);
onde TIPOICONE pode ser 
 
 JOptionPane.ERROR_MESSAGE
 JOptionPane.INFORMATION_MESSAGE
 JOptionPane.WARNING_MESSAGE
 JOptionPane.QUESTION_MESSAGE
 JOptionPane.PLAIN_MESSAGE
2) showInputDialog
 
Exemplo : String numLido = JOptionPane.showInputDialog( "Informe:" );
 
Note : Os métodos showInputDialog e showMessageDialog são static. 
Como chamar um método estático ... Regra : classe.método 
 
Exemplo : Fonte : Deitel & Deitel
 
import javax.swing.JOptionPane; 
 public class Soma {
 public static void main( String args[] ) {
 String numero1, numero2;
 int n1, n2, resultado; 
 numero1 = JOptionPane.showInputDialog ("Informe um inteiro:");
 numero2 = JOptionPane.showInputDialog ("Informe outro inteiro");
 // convertendo
 n1 = Integer.parseInt( numero1 ); //Converte para inteiro com parseInt
 n2 = Integer.parseInt( numero2 ); 
 // somando
 resultado = n1 + n2;
 JOptionPane.showMessageDialog(null, "A soma é "+ resultado, "Resultado:", 
 
JOptionPane.PLAIN_MESSAGE);
 }
}
 
Hierarquia de classes ... detalhando
 
java.lang.Object
 +--java.awt.Component
 +--java.awt.Container
 +--javax.swing.JComponent
 | +--javax.swing.JButton
 | +--javax.swing.JLabel
 | +--javax.swing.JMenuBar
 | +--javax.swing.JOptionPane
 | +--javax.swing.JPanel
 | +--javax.swing.JTextField
 |
 +--java.awt.Window
 +--java.awt.Frame
 +--javax.swing.JFrame
Classe JFrame
 
 A maioria das janelas criadas serão instâncias da classe JFrame ou de uma subclasse 
de JFrame. JFrame fornece os atributos e comportamentos básicos de uma janela : 
barra de título na parte superior da janela, botões para minimizar, maximizar e fechar 
janela.
 Um frame, implementado como uma instância da classe JFrame, é um container, pois 
pode abrigar componentes. Na verdade, é um container top-level.
 As aplicações com uma GUI, tipicamente, usam pelo menos um frame.
 Alguns Construtores:
 JFrame() : cria um novo frame, inicialmente invisível
 JFrame(String titulo) : cria um novo frame, inicialmente invisível, com 
título.
Métodos importantes para trabalhar com frames :
 public void setTitle(String title): Coloca um título na barra de título da 
janela.
 public void setVisible(boolean v): Faz com que o frame se torne visível (se v 
é true) ou não (se v é false). 
 Atenção ! show não é mais usado !! 
 public void setDefaultCloseOperation(int op) : Faz a janela realizar uma 
determinada operação quando fecha. Um possível argumento: 
JFrame.EXIT_ON_CLOSE, que é um int
 void setSize(int width, int height) : define o tamanho segundo a largura 
width e a altura height
 void pack() : dimensiona a janela para o tamanho mínimo necessário 
(preferido) para suportar os componentes.
 
Classe Container
 Um container é um objeto que armazena componentes, governando suas posições, 
tamanhos e comportamentos quando o usuário altera seu tamanho.
 Principais métodos:
 public void add(Component comp)
 public void remove(Component comp)
 public void setLayout(LayoutManager mgr): Usa o layout manager 
(gerenciador de layout) especificado para posicionaros componentes no 
container.
 Container getContentPane : retorna o painel de conteúdo (content pane) do 
frame.
Exemplo : JFrame janela = new JFrame();
 Container painel = janela.getContentPane();
 Será que a classe JFrame herda esses métodos ? Sim !!
 
Layouts
 A forma com que os componentes aparecem dispostos no painel é chamada layout.
 Cada container pode estar associado a um gerenciador de layout (Layout Manager).
 Alguns Layout Managers :
o FlowLayout - classe no pacote java.awt - default para JPanel
o GridLayout - classe no pacote java.awt 
o BorderLayout - classe no pacote java.awt - default para JFrame
 
 Para associar um LayoutManager a um Container deve-se utilizar o método 
 setLayout .
 Nesta aula veremos apenas o FlowLayout.
 
Exemplo :
 JFrame f = new JFrame("Janela Aplicacao"); 
 f.setLayout(new FlowLayout()); // Associação ao FlowLayout 
 
Exemplo :
 
 JFrame f = new JFrame("Janela Aplicacao");
 f.setLayout(new FlowLayout()); 
 
 JButton botao1 = new JButton ("Botão 1");
 f.add(botao1);
 JButton botao2 = new JButton ("Botão 2");
 f.add(botao2);
 
Mais adiante veremos detalhes da classe JButton.
 
JPanel
 É possível criar o frame e depois adicionar um ou mais painéis.
 Cada painel pode ter um gerenciador de layout.
 Em cada painel, podem ser adicionados várias componentes das classes JButton, 
JTextField, JLabel, entre outras.
 
Exemplo :
 JFrame f = new JFrame("Outro exemplo de FlowLayout );
 JPanel p = new JPanel();
 f.add(p); 
 
 O painel abrigará os componentes e poderá ter o seu layout redefinido com 
setLayout.
 E se quisermos adicionar um botão (objeto da classe JButton) ao painel ?
 Basta adicionar as duas próximas duas linhas :
 
JButton botao = new JButton("OK"); //cria o objeto botão 
 p.add(botao); 
 
Construtores da classe JPanel :
 public JPanel(): Cria um JPanel com o layout manager padrão (FlowLayout)
 public JPanel(LayoutManager mgr): Cria um JPanel com o layout manager 
especificado.
 
Exemplo: JPanel p1 = new JPanel(new BorderLayout());
 JPanel p2 = new JPanel();
 
Classe JButton
 Um botão é uma região clicável com a qual o usuário interage de forma a realizar uma 
ou mais ações.
 Dois construtores e principais métodos:
 public JButton(): cria um botão sem texto ou ícone.
 public JButton(String texto): Cria um novo botão com o texto dado como 
parâmetro definindo-o como texto do botão.
 public String getText():Retorna o texto mostrado no botão.
 public void setText(String text): Muda o texto de face do botão.
 
 Nota : É possível adicionar um ícone a um botão.
Classe JLabel
 Um label é um texto a ser mostrado na tela que normalmente oferece informação para 
o usuário de forma a tornar a interface mais compreensível.
 Construtor e alguns métodos:
 public JLabel() : Cria uma instância de JLabel sem imagem e sem título.
 public JLabel(String text): Cria um novo label com o texto dado como parâmetro 
definido como texto de face.
 public String getText():Retorna o texto mostrado no label.
 public void setText(String text): Muda o texto de face do label.
 Nota : É possível adicionar um ícone a um label.
 
Classe JTextField
Um textfield (campo de texto) é semelhante ao label, só que pode ser editado e 
modificado pelo usuário.
Textfields são usados geralmente para entrada de dados pelo usuário.
Construtores e métodos:
 public JTextField() : constrói um novo campo de texto.
 public JTextField(int colunas): Cria um novo textfield com uma largura, em 
caracteres, dada pelo parâmetro.
 public JTextField(String texto) : constrói um novo campo de texto com o 
texto especificado.
 public String getText(): retorna o texto atualmente armazenado no campo.
 public void setText(String texto): Modifica o texto do campo para ser igual à 
string dada como parâmetro.
 
Gerenciador de Layout : FlowLayout
 Default no painel (JPanel)
 Com este layout os componentes da interface são colocados da esquerda para a 
direita e podem, invadir a próxima linha.
 Exemplo :
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.Container;
public class TesteFlowLayout {
 public static void main(String args[]) {
 JFrame f = new JFrame();
 f.setLayout(new FlowLayout());
 f.add(new JButton("Botão 1 "));
 f.add( new JTextField("TEXTO 1"));
 f.add(new JButton("Botão 2"));
 f.add( new JTextField("TEXTO 2"));
 f.add( new JButton("Botão 3"));
 f.setSize(200,400); //especifica a largura e a altura, respectivamente
 f.setVisible(true);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 } 
}
Obs.1: O método setSize é herdado da classe Window.
Obs.2: Para que não seja possível redimensionar uma janela use
 objeto.setResizable(false); 
No caso do exemplo anterior : f. setResizable(false); 
 
Outra forma seria usar JPanel. Veja :
 
import javax.swing.*;
public class TesteFlowLayout {
 public static void main(String args[]) {
 //Instanciando ...
 JFrame f = new JFrame("Outro exemplo de FlowLayout );
 JPanel p = new JPanel();
 JButton b1 = new JButton("Botão 1 ");
 JButton b2 = new JButton("Botão 2 ");
 JButton b3 = new JButton("Botão 3");
 JTextField t1 = new JTextField(?TEXTO 1?);
 JTextField t2 = new JTextField("TEXTO 2");
 //Adicionando
 f.add(p); //adiciona o panel ao frame
 p.add(t1); //adiciona o textfield t1 ao panel
 p.add(b1); //adiciona o botão b1 ao panel
 p.add(t2);
 p.add(b2);
 p.add(b3);
 f.setSize(200,400); //especifica a largura e a altura
 f.setVisible(true);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}
 
 É possível redefinir o alinhamento com o método setAlignment. Veja os trechos 
:
 
FlowLayout layout = new FlowLayout();
layout.setAlignment(FlowLayout.RIGHT);
 
Para alinhar para a esquerda : : layout.setAlignment(FlowLayout.LEFT);
NOTE :
 FlowLayout.CENTER : Faz com que os componentes sejam alinhados ao centro 
de cada linha de componentes.
 FlowLayout.LEFT : Alinha os componentes a partir da margem esquerda do 
gerenciador.
 FlowLayout.RIGHT : Alinha os componentes a partir da margem direita do 
gerenciador.
 
 
 
Estratégias de Aprendizagem
 Para que o aprendizado seja proveitoso, o aluno deve se envolver ativamente na 
participação da aula, deve realizar as tarefas propostas, realizar testes por conta própria 
nos programas desenvolvidos e compartilhar sua experiência/conclusão com todos. 
 Toda tarefa realizada pode ser conferida com o professor, para que haja certeza se está 
ou não correta.
Indicação de Leitura Específica
Aplicação: articulação teoria e prática
Exercícios :
1 ) Pessoas do sexo feminino de 30 até 65 anos ou pessoas do sexo masculino com 
18 anos até 60 anos serão admitidas na empresa XYZ. Faça uma aplicação em Java 
para ler o nome, o sexo (masculino ou feminino) e a idade de uma pessoa e informar 
se a pessoa foi ou não admitida.
DICA : Para comparar strings use um dos métodos da classe String. Esta classe 
pertence ao pacote padrão java.lang, que não precisa ser importado.
· equals 
· equalsIgnoreCase : retorna verdadeiro independente de letras serem 
maiúsculas ou minúsculas
2) Provoque erro digitando um valor real ou um caracter quando solicitada a idade. 
O que ocorreu ? Uma exceção ! Como administrar essa situação ? Capturando a 
exceção. Para isso, observe a classe da exceção. Note que é a classeNumberFormatException. Agora, adicione código para capturar exceção no exercício 
anterior.
 
3) Escreva um programa para desenhar uma interface usando, adequadamente, o 
layout visto. A janela deverá ter um título e ainda, os seguintes componentes : 
>> dois labels :
Temperatura em Celsius :
Temperatura em Fahrenheit :
>> dois campos de texto relativos às temperaturas de entrada e de saída
>> um botão que permitirá converter a temperatura em celsius para a temperatura em 
fahrenheit.
 
Considerações Adicionais

Continue navegando