Baixe o app para aproveitar ainda mais
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
Compartilhar