DiJrId0u Posted March 29, 2012 Report Share Posted March 29, 2012 Caríssimos, Estou com uma grande dificuldade em conseguir arranjar a melhor forma para efectuar cálculos automáticos numa determinada célula/coluna de uma linha, numa jTable. Posteriormente também irei necessitar de efectuar um cálculo que efectue o sumatório da coluna indicada. Criei um modelo para a minha Jtable, já consigo adicionar adicionar e remover linhas da mesma, mas necessito de introduzir cálculos automáticos em 2 células, e que estas células sejam recalculadas sempre que edito outras células na mesma linha. Já fiz várias pesquisas na net, que falam sobre a hipotese de criar uma classe que implemente a classe TableCellEditor, mas não consigo perceber o seu funcionamento, nem se é a melhor solução... Alguém pode dar uma ajudinha? se for necessário disponibilizo o código que cria a minha Jtable e o modelo da mesma. Cumprimentos, Henrique Guerreiro Link to comment Share on other sites More sharing options...
DiJrId0u Posted April 2, 2012 Author Report Share Posted April 2, 2012 Problema resolvido. O cálculo é feito no table model da jtable. se alguem necessitar de ajuda, que comunique... Henrique Link to comment Share on other sites More sharing options...
Knitter Posted April 2, 2012 Report Share Posted April 2, 2012 Podias sempre colocar aqui o que fizeste, ou até criar um artigo na wiki com um exemplo 😛 . www.sergiolopes.eu Link to comment Share on other sites More sharing options...
DiJrId0u Posted April 2, 2012 Author Report Share Posted April 2, 2012 aqui vai: A coisa funciona um pouco ao contrário... a JTable não implementa qualquer mecanismo de cálculo automático... O que se deve fazer é implementar um TableModel... Esse TableModel obrigatóriamente tem um método chamado "Object getValueAt(int rowIndex, int columnIndex)" e é neste método que se fazem os cálculos. por exemplo, para uma tabela com o seguinte cabeçaho: "Artigo" - "Quantidate" - "Valor Unitário" - "Total", o metodo deverá fazer o seguinte: @Override public Object getValueAt(int rowIndex, int columnIndex) { TabelaArtigos ta = this.myDataList.get(rowIndex); //myDataList é uma lista de TabelaArtigos que está é apresentada na jtable. if (columnIndex == 0) { return ta.getArtigo(); } else if (columnIndex == 1) { return ta.getQtd(); } else if (columnIndex == 2) { return ta.getValorUnit(); } else if (columnIndex == 3) { return ta.getQtd() * ta.getValorUnit(); // o cálculo é efectuado nesta coluna, mas pode ser em qq uma das outras } return ""; } Espero que ajude, Henrique Link to comment Share on other sites More sharing options...
jarvas Posted April 2, 2012 Report Share Posted April 2, 2012 Obrigado DiJrId0u pela partilha. Muito útil. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now