Dúvida sobre JTable

Estou fazendo uma tela de devolução. A pessoa escolhe os itens que quer devolver, digita a quantidade que vai devolver da venda na coluna Qtd. Se for maior que a quantidade vendida, dá um aviso que a quantidade esta ultrapassando a quantidade comprada.


Estou com dúvida quanto a fazer o procedimento da coluna devolução (boolean), como trabalhar com checkbox, nunca utilizei. Estou querendo que os itens que estão marcados, sejam alterados. Ou devolvidos parcialmente ou total, e os que não estiverem checkados, não mudem nada. Como faço isso?

Você criou seu próprio TableModel?
Se não criou, já começa arrumando isso.

Se criou, basta sobrescrever o getColumnClass para retornar Boolean.class na coluna onde deseja ter checkboxes.

Sempre vejo as pessoas falando sobre criar um tablemodel, mas por que isso? (Desculpa a pergunta beeeem tosca, é que sou iniciante )

Avalie as duas possibilidades. Se sem tablemodel atender e for mais prático de desenvolver, nao precisa de tablemodel próprio, independente das leis da comunidade java.

O Swing utiliza MVC em tudo.
Quase todos os componentes possuem uma interface QualquerCoisaModel para fornecer os dados ao seu componente.
No caso da JTable por exemplo, se você não usar um TableModel você vai precisar adicionar item por item no JTable.
Imagina que tu fez um SELECT de 10 mil registros no banco, aí você faz um laço para criar objetos que representam esses registros e adiciona em uma coleção.
Agora você quer que esses objetos sejam apresentados em uma JTable, o que você faz?
Faz outro laço adicionando 10 mil itens na JTable?
Ou simplesmente manda o TableModel renderizar a coleção de objetos que você já tem populada?
:wink:

Implementar TableModel torna a implementação e manutenção muito mais fácil, sem contar que o programa fica mais rápido.

@Zeron, depois que conheci o TableModel, renderizar tabelas ficou bem mais prático! Um exemplo de TableModel seria esse aqui:

 private class TableModel extends AbstractTableModel {

        private List<ContasModel> contas;

        private final String[] colunas = {"Conta", "Titular", "Saldo Inicial", "Limite"}; // Nome das colunas da tabela.

        public TableModel(List<ContasModel> contas) { // Aqui você recebe os parâmetros que serão mostrados na tabela, por meio de um List.
            this.contas = contas;

        }

        @Override
        public int getRowCount() {
            return contas.size();
        }

        @Override
        public int getColumnCount() {
            return colunas.length;
        }

        @Override
        public Object getValueAt(int lin, int col) { // Aqui é o preenchimento da tabela de fato. Nos cases, mude de acordo com suas variáveis que foram lançadas na List que foi passada pro TableModel.

            switch (col) {
                
                case 0:
                    return this.contas.get(lin).getConta();

                case 1:
                    return this.contas.get(lin).getNome();

                case 2:
                    return this.contas.get(lin).getSaldo();

                case 3:
                    return this.contas.get(lin).getLimite();

                default:
                    return this.contas.get(lin);
            
            }

        }

        public List<ContasModel> getDataSet() {
            return contas;
        }

        @Override
        public String getColumnName(int col) {
            return colunas[col];
        }

        public void clearRow() {
            contas.clear();
            fireTableDataChanged();
        }

    } 

Depois que você entender como funciona isso tudo, DefaultTableModel ficará estupidamente retardado para você, além do que é mais facil configurar o seu próprio TableModel do que usar o Default. Lembre-se que tem que seu TableModel extende a classe AbstractTableModel. Neste exemplo, eu não uso o getColumnClass que o Ricardo disse para você sobrescrever. Mas basta você acrescentá-la dentro do TableModel.

Como faço para adicionar as linhas de uma tabela que estiverem com checkbox true em outra tabela ?