DiJrId0u Posted March 29, 2012 at 10:52 AM Report #446257 Posted March 29, 2012 at 10:52 AM 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
DiJrId0u Posted April 2, 2012 at 03:43 PM Author Report #447110 Posted April 2, 2012 at 03:43 PM Problema resolvido. O cálculo é feito no table model da jtable. se alguem necessitar de ajuda, que comunique... Henrique
Knitter Posted April 2, 2012 at 03:45 PM Report #447111 Posted April 2, 2012 at 03:45 PM Podias sempre colocar aqui o que fizeste, ou até criar um artigo na wiki com um exemplo 😛 .
DiJrId0u Posted April 2, 2012 at 04:03 PM Author Report #447113 Posted April 2, 2012 at 04:03 PM 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
jarvas Posted April 2, 2012 at 04:32 PM Report #447119 Posted April 2, 2012 at 04:32 PM Obrigado DiJrId0u pela partilha. Muito útil.
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