Jump to content
DiJrId0u

Cálculos automáticos em Jtable

Recommended Posts

DiJrId0u

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

Share this post


Link to post
Share on other sites
DiJrId0u

Problema resolvido.

O cálculo é feito no table model da jtable. se alguem necessitar de ajuda, que comunique...

Henrique

Share this post


Link to post
Share on other sites
DiJrId0u

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.