Remover item de uma JTable?

Salve galera

Seguinte, eu tenho uma tela de vendas com JTable que vou adicionando os itens e tenho um botao que quando clico abre um Jdialog pedindo o numero do item para ser removido

exemplo

item produto
001 coca cola
002 cafe
003 guarana
004 sorvete kibon

Digamos q o operador resolva remover o item002 deixando apenas os item001 e item003. Operador clica no botao, abre o JDialog pedindo o numero do item o operador informa o numero e o item e removido da JTable.

Estou tentando fazer assim.

// JDialog que remove o item
public void confirmaCancelamentoItem(){
    notifyListeners(Integer.parseInt(item.getText()));
    dispose();
}


//aqui meu AbstractTableModel
public class PDVTableModel extends AbstractTableModel{
    private List<ItensVenda> itemVenda;
    private String[] colunas = {"Itens","Descrição","Valor Un.(R$)","Qtd.","Un.","Total(R$)"};
    
    public PDVTableModel(){
        this.itemVenda = new ArrayList<ItensVenda>();
    }
    
    public PDVTableModel(List<ItensVenda> lista){
        this();
        this.itemVenda.addAll(lista);
    }
   
    
    public ItensVenda getItensVenda(int row){
        /**
         * Retorna os ItensVenda
         */
        return itemVenda.get(row);
    }
        
    public void deleteItem(int row){
        /**
         * Remove item 
         */
        itemVenda.remove(row);
        fireTableDataChanged();
    }


//aqui meu JDialog q estou tentando fazer isso
  @Override
    public void retornaItem(RetornaItemEvent e) {
        ListSelectionModel selectionMode = tabelaItensVenda.getSelectionModel();
        selectionMode.setSelectionInterval(e.retornaItem(), e.retornaItem());
        model.deleteItem(tabelaItensVenda.getSelectedRow());        
    }

Problema q no ListSelectionInterval e preciso informar a linha como 0 para selecionar a primeira, caso a pessoa informe a linha 1 ele seleciona a segunda.

Tentei tbm passar o indice diretamente para o deleteItem com deleteItem(e.getRetornaItem()), tbm nao resolveu.

Enfim, como fazer isso ?? Como consigo remover uma linha especifica na JTable, com o Operador(Usuario) informando o numero do item q deseja remover.

obrigado.

public void retornaItem(RetornaItemEvent e) { ListSelectionModel selectionMode = tabelaItensVenda.getSelectionModel(); selectionMode.setSelectionInterval(e.retornaItem(), e.retornaItem()); model.deleteItem(tabelaItensVenda.getSelectedRow());

//Você pode usar assim grande! ao ir adicionando os itens ela vai apagando

 DefaultTableModel model = (DefaultTableModel) nome_da_JTable.getModel();
        model.getDataVector().removeAllElements();
ArrayList limpar=new ArrayList();  
modelo.setLinhas(limpar);  
jTable.revalidate();  
jTable.repaint();  

Eu nao quero remover todos os elementos, quero remover um elemento especifico atraves de um indice informado pelo usuario.

por exemplo

item descricao
001 coca cola
002 sorvete kibon
003 cafe terreiro

No JTable, o item001 esta na linha 0…Entaum o usuario vai digitar: 1 na entrada de dados, entaum o item 001 deveria ser removido, no entando ele remove o item002.

Espero q tenha entendido agora.

Ah, so uma dica, nao use DefaultTableMode em seus projetos, prefira criar seu proprio modelo.

t+

Galera, resolvi o problema. Nao sei se e a melhor maneira, mas funcionou.

Eu pego o indice q o usuario informa e subtraio 1.

Exemplo: getItem() -1.

Funcionando, se alguem tiver alguma dica q funcione sem ter q subtrair posta ae.

obrigado.

Fala, fernandopaiva!
Olha eu aqui de novo metendo o bedelho… hahaha!
Porque você não faz um botão que remova os itens selecionados da sua JTable?
Por exemplo, você seleciona o item X, clica em remover e remove!

Você poderia fazer assim:

[code]JButton buttonRemoverItem = new JButton(“X”);
buttonRemoverItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {

    if (suaTable.getSelectedRows() == -1) {
        JOptionPane.showMessageDialog("Selecione um item para remover!");
    }
    else {
        seuTableModel.removerItemDaVenda(suaTable.getSelectedRow());
    }
}

});
[/code]
E, no seu TableModel:

[code]public void removerItemDaVenda(int linha) {

suaColecao.remove(linha);
fireTableRowsDeleted(linha, linha);

}[/code]

Assim solucionaria?
Abraços!

Opa Nicolas, blzera…?

Entaum, é um PDV nao se pode ter acessos a componentes e o foco nunca vai pra JTable fica sempre no codigo de barras do produto. Mas ja resolvi, fiz varios testes e esta funcionando 100%.

vlw ae.