Buscar

Aula 9_2_2012- POO

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Programação Orientada a Objetos
Professora : Jane
*
Interface Gráfica com Swing
Eventos
Aula 9
Professora: Jane
Programação Orientada a Objetos
Professora : Jane
*
Objetivo
Correção de exercícios
 * projeto Aula8_gabarito_FaixaEtaria
Mais um exemplo com combo box : 
 * projeto Aula8_Exemplo2_ComboParte1
Eventos com texto e validação
Lista e modelo
Mais correção de exercícios
 * projeto que alterna painéis (explicado em 03/10)
Programação Orientada a Objetos
Professora : Jane
*
Tarefas do final da aula 8 :
1) Faça uma aplicação que leia o nome de uma pessoa e ofereça um comboBox com faixas etárias :
Até 12 anos
De 13 anos até 17 anos
De 18 em diante
Conforme a faixa selecionada deverá ser apresentada uma das mensagens 
abaixo :
 Infantil
 Juvenil
 Adulto
Adicione três checkboxes para escolha de esporte : futebol, natação e judô.
 GABARITO no projeto Aula8_Gabarito_FaixaEtaria
Programação Orientada a Objetos
Professora : Jane
*
Mais um exemplo com combo box
Teste e entenda o projeto 
 Aula8_Exemplo2_ComboParte1
 
entregue na aula do dia 10/10.
Em breve ... este projeto mudará e receberá o nome 
 Aula8_Exemplo2_ComboVersaoFinal,
pois trabalharemos com mais um tipo de evento.
Programação Orientada a Objetos
Professora : Jane
*
Manipulando eventos de teclado : interface KeyListener
Faremos uso da interface KeyListener e das classes KeyAdapter e KeyEvent.
Eventos de teclado são objetos da classe KeyEvent. Para tratar este tipo de evento devemos ter um objeto ouvinte de uma classe que implemente a interface KeyListener ou ter um objeto da classe adaptadora KeyAdapter.
Por que existe uma classe adaptadora neste caso ? Porque a interface KeyListener possui 3 métodos e pode ser desnecessário implementar todos eles.
Métodos da interface KeyListener :
void keyPressed(KeyEvent e) : invocado quando uma key tiver sido pressionada.
void keyReleased(KeyEvent e) : invocado quando uma key tiver sido solta ou liberada.
 void keyTyped(KeyEvent e) : invocado quando uma key tiver sido digitada.            
 
Programação Orientada a Objetos
Professora : Jane
*
Do tutorial oficial da Sun
Tradução : “ Eventos “Key typed” são de alto nível e geralmente não dependem da plataforma ou do layout do teclado. ... No caso mais simples, um evento de “key typed” (tecla digitada) é produzido por um única pressionada de tecla (ex: ‘a’). Frequentemente, no entanto, caracteres são produzidos por séries de pressionamentos de tecla (Ex: ‘shift’ + ‘a’). “
 Nossos projetos :
 1º.) Executar a aplicação Aula8_Exemplo1_KeyEvent
 2º.) Depois de estudar mais sobre eventos KeyEvent (a seguir), voltaremos ao projeto Aula8_Exemplo2_ComboParte1 para realizar a tarefa proposta no próprio programa (ver pasta de tarefas). O projeto será chamado Aula8_Exemplo2_ComboTarefa .
Programação Orientada a Objetos
Professora : Jane
*
Eventos com texto - Validação
Consumindo eventos [by Core Java]
 Ocasionalmente, você irá querer capturar um evento de forma que ele não seja passado para um componente de interface.
 Ex: Descartar qualquer caracter que não seja dígito.
 Para essa abordagem, há os seguintes métodos :
void consume() : consome o evento de baixo nível e assim, previne que o mesmo seja enviado a um componente de interface.
boolean isConsumed() : retorna true se o evento foi consumido.
 
Programação Orientada a Objetos
Professora : Jane
*
KeyEvent
Alguns métodos : 
 1) char getKeyChar()  : retorna o caracter associado com a key no evento.          
2)  int getKeyCode()  : retorna o inteiro keyCode (código) associado à key no evento.
3)  static String getKeyText(int keyCode)  : retorna a String que descreve o keyCode, como por exemplo, HOME, F1 ou A.        
4)  boolean isActionKey() : retorna se a key no evento é uma key de “action”. 
Programação Orientada a Objetos
Professora : Jane
*
Projeto Aula8_Exemplo2_ComboTarefa 
Veja que neste projeto temos eventos das seguintes classes :
ActionEvent
ItemEvent
KeyEvent
DICA : Note o uso dos métodos estáticos isDigit e isLetter da classe 
 Character.
1) Se char c; então podemos testar se c é dígito e podemos testar se c é letra.
2) Testando se c é dígito : if (Character.isDigit(c))
 System.out.println(c + “ é dígito.”);
3) Testando se c é letra : if (Character.isLetter(c))
 System.out.println(c + “ é letra.”);
Veja o gabarito em Aula8_Exemplo2_ComboVersaoFinal
Programação Orientada a Objetos
Professora : Jane
*
JList
JList cria uma lista de seleção. Listas
Alguns construtores:
public JList()
Cria uma lista vazia.
public JList(Object[] itens)
Cria uma lista com os elementos do vetor itens. Para apresentar os itens na tela, o método toString() é chamado para cada elemento do vetor.
public JList(ListModel modelo)
Cria uma lista a partir do modelo
Programação Orientada a Objetos
Professora : Jane
*
JList
Alguns métodos:
public void setVisibleRowCount(int linhas)
Define o número de linhas a serem apresentadas.
public void clearSelection()
Limpa a seleção.
public int getSelectedIndex()
Retorna o índice do elemento selecionado.
public int[] getSelectedIndices()
Retorna os índices dos elementos selecionados.
public Object getSelectedValue()
Retorna o elemento selecionado.
public Object[] getSelectedValues()
Retorna os elementos selecionados (retorno é array de objetos)
public boolean isSelectedIndex(int i)
Retorna true se o i-ésimo elemento está selecionado.
Programação Orientada a Objetos
Professora : Jane
*
JList
Alguns métodos (continuação):
public void setSelectedValue(Object item)
Define o elemento selecionado.
public void setSelectedValues(Object[] itens)
Define os elementos selecionados.
public void setSelectionMode(int modo)
Define o tipo de seleção:
ListSelectionModel.SINGLE_SELECTION: seleção única
ListSelectionModel.SINGLE_INTERVAL_SELECTION: seleção de um único intervalo contínuo
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION: seleção sem restrições (default)
Programação Orientada a Objetos
Professora : Jane
*
JList e Modelos
O Swing disponibiliza uma classe abstrata, chamada de AbstractListModel, a partir da qual podemos definir nossos modelos para JList.
Podemos usar um modelo default (padrão). Para isso, criaremos uma instância da classe DefaultListModel, que é subclasse de AbstractListModel.
Programação Orientada a Objetos
Professora : Jane
*
Classe DefaultListModel 
Construtor : DefaultListModel() 
Alguns métodos :
void add(int index, Object element) : insere o elemento element na posição especificada por index          
2) void addElement(Object obj) : adiciona o componente especificado no fim da lista.          
3) Object get(int index) : retorna o elemento da posição dada por index.          
4)  int getSize() : retorna o número de componentes na lista.          
5) Object remove(int index) : remove o elemento da posição especificada na lista.        
Programação Orientada a Objetos
Professora : Jane
*
Classe DefaultListModel 
Mais métodos (continuação) : 
6)  void removeAllElements() : remove todos os componentes da lista e define seu tamanho como zero.           
7)  boolean removeElement(Object obj) : remove a 1a. ocorrência do obj da lista.       
8) void removeElementAt(int index) : deleta o componente de índice especificado.        
Programação Orientada a Objetos
Professora : Jane
*
Criando lista com modelo DefaultListModel 
1ª. Possibilidade :
1) Criar objeto de DefaultListModel. 
 Exemplo : DefaultListModel model = new DefaultListModel();
2) Criar objeto de JList e passar para o constutor de JList o modelo.
 Exemplo : JList lista = new JList(model);
3) Realizar as operações com a lista usando o modelo.
Exemplo : 
Projeto Aula9_Exemplo1_JList_DefaultModel
 Baseado no exemplo
do Java Swing, 2nd Edition
Programação Orientada a Objetos
Professora : Jane
*
Criando lista com modelo DefaultListModel 
2ª. Possibilidade :
1) Criar objeto de JList. Exemplo : JList lista = new JList();
2) Criar objeto de DefaultListModel. 
 Exemplo : DefaultListModel model = new DefaultListModel();
3) Definir o modelo da lista de JList. Para isso, usar o método setModel.
 Exemplo : lista.setModel(model);
4) Realizar as operações com a lista, conforme o objetivo da aplicação.
Programação Orientada a Objetos
Professora : Jane
*
Tarefa 
Use o projeto Projeto Aula9_Exemplo1_JList_DefaultModel
 e faça o que se pede :
Adicione um botão Copiar ao sul do painel e um label ao centro do painel.
Quando acionado o botão Copiar, o item selecionado da lista deverá ser copiado para o label.
Sugestão : Use o método getSelectedIndex() de JList , além de método(s) de 
 DefaulListModel.
 Mude as dimensões da janela para 300 
 por 250.
 
Programação Orientada a Objetos
Professora : Jane
*
Classe ListSelectionEvent
Um objeto desta classe é um evento que caracteriza uma mudança na seleção corrente.
Alguns métodos :
boolean getValueIsAdjusting() : retorna verdadeiro se o usuário ainda está manipulando a seleção da lista.
String toString()  : retorna uma string que mostra e identifica as propriedades do objeto.     
Método herdado de java.util.EventObject : public Object getSource()
 Projeto : ExemploComboLista
Programação Orientada a Objetos
Professora : Jane
*
Interface ListSelectionListener
 Quando uma classe implementar a interface ListSelectionListener, terá que implementar o método valueChanged.
Método :
 public void valueChanged(ListSelectionEvent e) { 
 
 //código para tratar o evento
 }
 Chamado quando o valor da seleção muda.
Projeto : 
ExemploComboLista

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais