Eu gostaria de inserir dados em um jTable em tempo de execução, s situação é o seguinte…
Estou fazendo uma tela para inclusão de itens de pedidos, mas o usuário precisa escolher o preço e definir o valor e clicar em ‘add item’, quando clicar a informação é enviada para o jTable para que o usuário veja os itens que está adicionando antes de gravar no banco de dados…
Estou utilizando uma classe e extendendo a classe AbstractTableModel e implementando o observer, se eu utilizar o método update da interface observer eu consigo atualizar o jTable com as novas informações? Se sim como posso fazer?
O table model já oferece uma implementação do padrão Observer, só que com o nome “Listener”. E o AbstractTableModel disponibiliza métodos que informam para os listeners (observers) que os dados foram atualizados.
Dê uma olhada na documentação sobre os métodos iniciados com “fire”, são eles que fazem o papel de informar atualização na tabela. Existe um para cada situação. Por exemplo:
[code] // Método que adiciona um item ao seu TableModel.
public void addItem(Item item) {
// Adiciona o item.
listaDeItens.add(item);
// Pega a quantidade de registros e subtrai um para achar o último índice da tabela.
int indice = getRowCount() - 1;
// Método que reporta a inserção de linhas. A JTable recebe a notificação e redesenha permitindo que a atualização seja visualizada.
fireTableRowsInserted(indice, indice);
}[/code]
Este é um exemplo usando o método “fireTableRowsInserted”. Toda vez que o método “addItem” for chamado no TableModel, a JTable já fica sabendo da atualização e redesenha a(s) linha(s) passadas no parãmetro. Basta ver qual dos métodos “fire” você precisa e chamar direto no TableModel.