Buscar

Aula 10- 2_2012_parte2_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 10 (parte 2)
Professora: Jane
Programação Orientada a Objetos
Professora : Jane
*
Objetivo
Correção 
Tabela
Exercícios
Atenção : Ao fim da aula, depois de fazer os exercícios, 
 verificar se há dúvida no projeto que alterna painéis 
 (explicado em 03/10)
Programação Orientada a Objetos
Professora : Jane
*
Tarefa passada na aula 9 – slide 21
 CORREÇÃO 
Use o projeto ExemploComboLista e faça o que se pede:
 Ao clicar em um nome no 2º. Combo Box (nome do cliente), deverá aparecer uma janela de diálogo informando o cpf do cliente selecionado. 
 Será usado ActionEvent. 
 A solução dada é parcial. Melhore-a, conforme orientação em aula.
Programação Orientada a Objetos
Professora : Jane
*
Classe JTable
JTable cria uma tabela.
Construtores:
public JTable()
Cria uma tabela vazia.
public JTable(int linhas, int colunas)
Cria uma tabela vazia com as dimensões especificadas.
public JTable(Object[][] dadosTabela, 
 Object[] nomesColunas)
Cria uma tabela com os dados da matriz dadosTabela e com as colunas do vetor nomesColunas.
public JTable(TableModel modelo)
Cria uma tabela a partir do modelo
Programação Orientada a Objetos
Professora : Jane
*
JTable 
 Alguns métodos
public void addColumn(TableColumn coluna)
Adiciona uma coluna no final da tabela.
public void clearSelection()
Limpa a seleção da tabela.
public int[] getSelectedRows()
Retorna os índices das linhas selecionadas.
public int[] getSelectedColumns()
Retorna os índices das colunas selecionadas.
public int getColumnCount()
Retorna a quantidade de colunas.
public int getRowCount()
Retorna a quantidade de linhas.
public void setValueAt(Object dado, int i, int j)
Define o valor da posição (i, j) da tabela.
public void setSelectionMode(int modo)
Define o tipo de seleção. Recebe os mesmos parâmetros do JList.
public TableModel getModel() : retorna o TableModel que provê os dados mostrados pela JTable.
Programação Orientada a Objetos
Professora : Jane
*
JTable e Modelos
O JTable permite a definição do valor de uma célula individual através do método setValueAt(). Entretanto, a JTable foi projetada para trabalhar com modelos.
Uma célula da tabela
Programação Orientada a Objetos
Professora : Jane
*
O Swing disponibiliza uma classe abstrata, chamada de AbstractTableModel, que implementa a interface TableModel a partir da qual podemos definir nossos modelos para JTable. 
A interface TableModel  especifica os métodos que JTable irá usar a fim de manipular um modelo de dados tabular. 
 Alguns métodos de TableModel : 
int getColumnCount() : obtém o número de colunas
int getRowCount() : obtém o número de linhas
String getColumnName(int col) : retorna o nome da coluna col
Object getValueAt(int indLinha, int indColuna) : retorna o valor da célula de linha indLinha e coluna indColuna
 void setValueAt (Object aValue, int indLinha, int indColuna) : define o valor na célula de linha indLinha e coluna indColuna.
Programação Orientada a Objetos
Professora : Jane
*
Usando scrolls
Exemplo :
 JTable tabela = new JTable(modelo); 
 JScrollPane scrollpane = new JScrollPane(tabela);
 
 Para obter o modelo temos o método getModel (vide slide 5) : 
 public TableModel getModel() : 
 retorna o TableModel que provê os dados mostrados pela JTable.
modelo é um TableModel, por exemplo
Objeto de JTable
Programação Orientada a Objetos
Professora : Jane
*
Exemplo : Criando tabela com dados específicos
 Considerando JTable table; 
 String[] colunas = {"Nome", "Sobrenome”};
 Object[][] data = { {"Maria" , "Silva”},
	 {"Tei" , "Ping”},
	 		 {"Victor" , "Valentim”},
	 {"Gisele" , "Beach"},
	 {"Maricota", "Silva“} };
 table = new JTable(data, colunas);
 
Veja a parte inicial do projeto Aula10_Tabela_EX1
 
Programação Orientada a Objetos
Professora : Jane
*
Evento : TableModelEvent
Interface : TableModelListener 
É preciso implementar a interface TableModelListener 
public interface TableModelListener extends EventListener
 TableModelListener define a interface para um objeto que “ouve” (listens) as mudanças em uma TableModel.
 		Nesta interface é encontrado o método tableChanged. Veja a assinatura :
			void tableChanged(TableModelEvent e) 
 Podemos informar as células, linhas ou colunas que mudaram. 
 NOTE: change significa mudar.         
Programação Orientada a Objetos
Professora : Jane
*
Associando a fonte do evento ao ouvinte
Para associar o ouvinte a fonte do evento usamos o método 
 addTableModelListener() 
Exemplo : tabela.getModel().addTableModelListener(obj);
 onde tabela é um objeto de JTable previamente definido e obj é um objeto de uma classe ouvinte. Lembrando ... A classe ouvinte deverá implementar o método tableChanged da interface TableModelListener.
 Volte ao projeto !
 
Volte ao restante do projeto Aula10_Tabela_EX1
 
Programação Orientada a Objetos
Professora : Jane
*
Alguns métodos de TableModelEvent
int getColumn() : retorna a coluna para o evento.           
int getFirstRow() : retorna a 1a. linha que mudou.     
 int getLastRow() : retorna a última linha que mudou. 
Métodos herdados de java.util.EventObject : getSource() e toString()
Programação Orientada a Objetos
Professora : Jane
*
Mais evento ... MouseEvent
Note que o projeto exemplo usa o evento MouseEvent. Podemos clicar em qualquer célula da tabela e daí realizar algo desejado.
Nossa classe possui o seguinte trecho:
 private class Ouvinte extends MouseAdapter
 {
 @Override
 public void mouseClicked(MouseEvent e) {
 imprimirDados(table);
 }
 }
Programação Orientada a Objetos
Professora : Jane
*
MouseListener e MouseAdapter
A interface MouseListener possui 5 métodos, dos quais nos interessa apenas o método abaixo :
 mouseClicked(MouseEvent e) : Invocado quando o botão do mouse tiver sido clicado (pressionado ou solto) sobre um componente.
 
Como a MouseListener possui uma classe adaptadora, a MouseAdapter, nós a usaremos e implementaremos apenas o método que nos interessar, que no caso é o método mouseClicked. 
Programação Orientada a Objetos
Professora : Jane
*
Exemplo : Outra aplicação com tabela
Projeto : ExemploComboListaTabela
Nesta aplicação será usada a classe DefaultTableModel, que é subclasse de AbstractTableModel.
Classe DefaultTableModel (implementa a interface TableModel)
 Construtor :
DefaultTableModel() : constrói um DefaultTableModel padrão que é uma tabela sem linha e sem coluna.
 Métodos :
 2) void addColumn(Object columnName) : adiciona uma coluna ao modelo.
3)  void addRow(Object[] rowData) : adiciona uma linha ao final do modelo. Note Object [] é um vetor de Object.         
				          
Programação Orientada a Objetos
Professora : Jane
*
Trecho do projeto ExemploComboListaTabela 
Trecho da aplicação :
// Cria um modelo para a tabela
 DefaultTableModel modeloTabela = new DefaultTableModel();
 modeloTabela.addColumn("CPF");
 modeloTabela.addColumn("Nome");
// Cria uma tabela vazia com o modelo definido
 JTable tblTabela = new JTable(modeloTabela);
 Veja o projeto
ExemploComboListaTabela, mas antes veja o próximo slide.
Programação Orientada a Objetos
Professora : Jane
*
No projeto usamos ...
Mais métodos para serem usados com objetos de JTable 
ListSelectionModel getSelectionModel() : retorna o   modelo de seleção corrente.
int getSelectedRow()
: retorna o índice da 1a. linha selecionada. Se nenhuma linha for selecionada, será retornado -1.          
Mais um método de DefaultListModel (ver esta classe na aula 9) que aparece nesta aplicação da aula 10 (parte 2) :
Object getElementAt(int indice) : retorna o componente na posição especificada por indice.
Programação Orientada a Objetos
Professora : Jane
*
Por curiosidade ...
A classe JTable implementa as interfaces abaixo, dentre outras :
 public class JTable extends JComponent implements 
TableModelListener, TableColumnModelListener, ListSelectionListener
Programação Orientada a Objetos
Professora : Jane
*
Tarefas 
Considere o projeto Aula10_Tabela_Ex1. Sabe-se que é possível modificar uma célula da tabela. Considere que haja tal mudança e imprima na saída padrão o novo valor da célula após a mudança, além da linha e da coluna onde houve mudança (change). Pesquise nos métodos de TableModel.
 Gabarito : Arquivo Aula10_Tabela_Ex1 (projetos completos)
2) Considere o projeto ExemploComboListaTabela. O objetivo é clicar em uma linha da tabela e então expor os dados da linha selecionada nos labels à direita da tabela. Para isso, acrescente código ao método valueChanged.
 Gabarito : Arquivo ExemploComboListaTabela (projetos completos)
Programação Orientada a Objetos
Professora : Jane
*
3) Considere a interface abaixo e faça o que se pede no próximo slide :
O gabarito será encontrado, em breve, no projeto TarefaTabelaFixacao.
Programação Orientada a Objetos
Professora : Jane
*
Objetivos :
Obter a matrícula e a média de um aluno através de 2 textfields e adicionar as entradas em uma tabela, após ser acionado o botão >>>>. 
Acionada uma linha da tabela, seus dados deverão ser copiados para dois labels à direita da tabela. Veja os labels Matrícula e Média.
Eventos :
Clique no botão >>>, o que provocará a inserção dos dados dos textfields na tabela.
Enter nos textfields, o que provocará a limpeza dos campos de entrada.
3) Seleção de um item da tabela, o que provocará a cópia da matrícula e da média para o label.

Teste o Premium para desbloquear

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

Outros materiais