Acrescentando linhas no JTable

Possuo um formulário com um três JEdits:

  • um Jedit para um valor de um documento;
  • um para o número de parcelas a serem pagas.
    Abaixo desses tenho um JTable.
    Eu preciso que no JTable sejam colocados linhas tanto quanto forem os números de parcelas escolhidas ao sair do JEdit número de parcelas.

Por exemplo:

Se a pessoa possue um pagamento de 300,00 e escolhe três parcelas, devem ser acrecentadas três linhas com o valor de 100,00 no JTable.

Algúem podde me ajudar?

Eai veio JTable é algo muito foda de se mecher mas se voçe estiver disposto ela é algo muito louco de se fazer…então vamos a sua pergunta você vai ter que criar uma classe filha de abstracttablemodel dai voce setá sua tabela com esse modelo …dai quando voce quizer inserir um valor você inseri no modelo e não na tabela seria algo como isso

public class TableModel extends AbstractTableModel {

//Variáveis

protected Vector data = new Vector();

private String[] colunas = null;

//para sabe quais colunas irão ser editaveis e quais não serão
private boolean[] edicao = null;

private static TableModelEvent modelChanged;

private static final TableModelEvent UPDATE = modelChanged;       

/**
 * Construtor Default
 *
 */
public TableModel(){
    
}

/**
 * Contrutor
 * 
 * @param colunas
 */
public TableModel(String[] colunas) {
    setColunas(colunas);
}


/**
 * Esse construtor necessita de dois parâmetros uma que seria o nome das colunas 
 * e o outro que seria quais colunas serão ou não serão editáveis 
 * 
 * @param colunas
 * @param edicao
 */
public TableModel(String[] colunas, boolean[] edicao) {
    this.edicao = edicao;
    setColunas(colunas);
}

public void zeraTabela(){
    int ultimaLinha;
    if(data.size()==0)
        ultimaLinha = 0;
    else
        ultimaLinha = data.size()-1;
    
    this.data.clear();
    this.fireTableRowsDeleted(0 , ultimaLinha);
} 

/**
 * Retorna os nome das Colunas
 * @return
 */
public String[] getColunas() {
    return colunas;
  
}


/**
 * Retorna todas as Linhas
 * @return
 */
public Vector getData() {
    return data;
}

/**
 * Seta os nome das colunas
 * @param strings
 */
public void setColunas(String[] strings) {
    this.colunas = strings;
    fireTableChanged(UPDATE);
}

/**
 * Seta as linhas da tabela
 * @param data
 */
public void setData(Vector data) {
    this.data = data;
    fireTableDataChanged();
}

/**
 * Retorna o numero de colunas no modelo
 * 
 * @see javax.swing.table.TableModel#getColumnCount()
 */
public int getColumnCount() {
    return getColunas().length;
}

/**
 * Retorna o numero de linhas existentes no modelo
 * 
 * @see javax.swing.table.TableModel#getRowCount()
 */
public int getRowCount() {
    return getData().size();
}

/**
 * Pega um valor em uma determinada Celula
 */
public Object getValueAt(int row, int col) {

    return ((Vector) data.elementAt(row)).elementAt(col);
}


/**
* Seta o valor na linha e coluna
* @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
*/
public void setValueAt(Object value, int row, int col) {
    //Pega a linha a ser alterada...
    Vector aRow = (Vector) data.elementAt(row);
    //altera o valor da coluna passada
    aRow.setElementAt(value, col);
    //e grava em data
    getData().setElementAt(aRow, row);
    
    fireTableCellUpdated(row, col);
}



/**
 * Caso o array de boolean edicao seja null a tabela não será editável
 * senão ela retorna true para qual coluna que será editavel ou false
 * para qual coluna que não será editavel 
 * 
 * @param row
 * @param col
 * @return true/false
 */	
public boolean isCellEditable( int row , int col ){
    if ( edicao != null )
        return this.edicao[col];
    else
        return false;
}

/**
 * Adiciona uma linha
 * @param dadosLinha
 */
public void addRow(Vector dadosLinha) {
    getData().add(dadosLinha);
    // Informa a jtable de que houve linhas incluidas no modelo
    // Como adicionamos no final, pegamos o tamanho total do modelo
    // menos 1 para obter a linha incluida.
    int linha = getData().size() - 1;
    fireTableRowsInserted(linha, linha);
    return;
}

/**
 * JTable uses this method to determine the default renderer/
 * editor for each cell.  If we didn't implement this method,
 * then the last column would contain text ("true"/"false"),
 * rather than a check box.
 */
public Class getColumnClass(int c) {
	return getValueAt(0, c).getClass();
}



/**
 * Remove uma determinada linha selecionada
 * 
 * @param row
 */
public void removeRow(int row) {
    getData().remove(row);
    // informa a jtable que houve dados deletados passando a linha removida
    fireTableRowsDeleted(row, row);
}

/**
 * Remove a linha pelo valor da coluna informada
 * 
 * @param val
 * @param col
 * @return
 */
public boolean removeRow(String val, int col) {
    // obtem o iterator
    Iterator i = getData().iterator();
    int linha = 0;
    // Faz um looping em cima das linhas
    while (i.hasNext()) {
        // Obtem as colunas da linha atual
        String[] linhaCorrente = (String[]) i.next();
        linha++;
        // compara o conteudo String da linha atual na coluna desejada
        // com o valor informado
        if (linhaCorrente[col].equals(val)) {
            getData().remove(linha);
            // informa a jtable que houve dados deletados passando a
            // linha removida
            fireTableRowsDeleted(linha, linha);
            return true;
        }
    }
    // Nao encontrou nada
    return false;
}

////////////////////////////////////////////////////////////
//      Implementação do getColumnName                    //
////////////////////////////////////////////////////////////

/**
 * Retorna o nome da coluna.
 * 
 * @see javax.swing.table.TableModel#getColumnName(int)
 */
public String getColumnName(int col) {
    return getColunas()[col];
}

/**
 * Altera a linha inteira pedido um vetor com os valores
 * 
 * @param linhaAlterar
 * @param novoValor
 */
public void alteraLinha(int linhaAlterar, Vector novoValor){
    ((Vector) getData().elementAt(linhaAlterar)).setElementAt(novoValor,linhaAlterar);
    fireTableRowsUpdated(linhaAlterar, linhaAlterar);
}

/**
 * Retorna um vetor com os valores da linha passada
 * 
 * @param linhaRetornar
 * @return
 */
public Vector retornaLinha(int linhaRetornar){
    return (Vector) getData().elementAt(linhaRetornar);   
}

}

depois voce faz um seguinte cria um objeto que seria o modelo dessa tabela assim TableModel modelo = (TableModel)suatabela.getModel();

dai voce chama o metodo addRow passando uma vector com os valores que você quer inserir na tabela…

Se não der certo você reporta ai seu problema que eu te ajudo…obs: se você dar uma estuda nesse codigo você vai ver do que ele é capaz mas agora o que seria melhor ainda é você criar uma component tabela que dai você poderia já inserir editar pagat tudo direto na tabela sem precisar ficar usando o modelo toda hora…qualquer coisas posta aí