Li alguns conteúdos sobre listeners e eventos em jtables, tablemodels, etc. Porém ainda me restam algumas dúvidas.
Estou com o seguinte cenário de desenvolvimento:
Tenho 2 TableModels: (1 - tableModelVisaoGeral), que precisa ser atualizada com base nas alterações feitas na segunda (2 - tableModelPedCompra).
Minhas dúvidas são as seguintes:
Coloco o listener na segunda tableModel e o evento na primeira tableModel ou vice-versa?
Coloco os dois na mesma?
Alguém tem algum exemplo de implementação de algo desse tipo?
É recomendado usar o listener da jTable ou os da tableModelListener?
É boa prática implementar os listeners/eventos na própria TableModel?
Pesquisa o padrão de projeto Observer ou Listener (são sinônimos).
F
fabiio2
Obrigado pela atenção!
Li um conteúdo sobre o padrão mas estou com a seguinte dúvida: no meu caso implemento a classe/interface Observable/Observer ou utilizo os listeners do jTable?
Tenho uma jTable que irá observar várias outras jTAbles em abas diferentes na mesma janela.
S
staroski
Se os listeners da JTable servem para observar/ouvir o que você quer, utilize eles, senão crie sua própria estrutura.
D
darlan_machado
Qual tipo de listener você precisa?
F
fabiio2
Preciso de um listener que detecte alterações nas tabelas e ative métodos na tabela principal para atualizar ela.
Comecei implementando a interface TableModelListener na tableModel principal. Sobrescrevi o método tableChanged. Parece que vai atender bem.
Adicionei ela como listener em outra tableModel secundária.
Consegui gerar alguns eventos e estou testando.
Estou no caminho certo?
D
darlan_machado1 like
a JTable já provê uma série de eventos para isso. Como ela é um Component, você tem eventos de mouse (click, over, etc), teclado (key pressed, released, etc) e, a partir deles, pode obter as linhas selecionadas (getSelectedRows) e colunas (getSelectedColumns), podendo combiná-las e ter valores em diferentes pontos (células) da JTable.
Cabe a você programar o comportamento que cada ação terá.
A abordagem (como vai fazer) depende de quanto você conhece da linguagem e como quer fazer. Esta abordagem de colocar os listeners no outro TableModel é uma questão de gosto, penso eu. Eu faria diferente, mas, se te atende, foque nisso.
F
fabiio2
Eu cheguei a olhar alguns listeners da jTable, mas me parece que não há listener relacionado a mudanças de valores. Tem listeners para ações do usuário.
Tem algum lugar que posso checar mais a fundo os listeners da jTable?
Se você sobrescrever o método setValueAt do TableModel, você saberá quando um valor é alterado em determinada célula e aí pode notificar seus ouvintes.
F
fabiio2
Prezados, bom dia.
Estou dando continuidade no desenvolvimento deste aplicativo mas na tabela principal que é a que fica escutando as outras tabelas, preciso atualizar os valores nela de acordo com as modificações nas tabelas secundarias.
No caso, não preciso saber qual a linha das tabelas secundarias foi modificada, só preciso pegar o objeto e setar um campo na tabela principal. Já consigo fazer isso.
A lógica que encontrei foi a do código abaixo: