Passar linhas selecionadas de uma jtable para outra da mesma tela

Boa noite como o proprio topico ja diz tudo tenho em um form 2 jtables uma em cima da outra e precisava de algum exemplo por gentileza de um form que passa as linhas selecionadas de uma jtable e se eu clicar no botao ele cai na 2jtable, se eu nao me expressei bem pode falar que eu reformulo minha duvida vlw pela atencao.

Opa, vamos lá…
Acredito que você quer algo parecido com a imagem que eu anexei, já fiz algo parecido, vou postar o código para jogar da tabela da esquerda (tabelaOrigem) para a direita (tabelaDestino) e espero que te de uma idéia de como fazer para o que você precisa.

if (tabelaOrigem.getSelectedRowCount()!=0){ //Verifica se existe linha selecionada para não dar erro na hora de pegar os valores

	//Pega os models das listas, para fazer as inserções e remoções
	DefaultTableModel modelOrigem = (DefaultTableModel) tabelaOrigem.getModel();
	DefaultTableModel modelDestino = (DefaultTableModel) tabelalDestino.getModel();

	//Cria uma linha para ser incluida na tabela de destino, no meu caso tem duas colunas, adapte para as suas tabelas
	Object[] obj = {tabelaOrigem.getValueAt(tabelaOrigem.getSelectedRow(), 0),tabelaOrigem.getValueAt(tabelaOrigem.getSelectedRow(), 1)};

	//Adiciona no destino e remove da origem
	modelDestino.addRow(obj);
	modelOrigem.removeRow(tabelaOrigem.getSelectedRow());
} else { 
//Não tem nenhuma linha selecionada na tabela de origem, faça um aviso para o usuário ou algo do tipo.
}

Obs: Não é recomendavel usar o DefaultTableModel, este é apenas um exemplo, veja esse post no próprio forum para saber mais sobre isso: http://www.guj.com.br/java/199067-redimensionar-jtable---pra-variar--resolvido-/2#1001295

Opa, samuelM!
Realmente, não use o DefaultTableModel. Além de ser um saco ter que ficar fazendo cast toda hora, você não trabalha diretamente com as classes de domínio do sistema, sem contar que é um porre pra fazer manutenção.

Você pode criar um modelo para a sua JTable. Uma classe que estenda de AbstractTableModel [para aprender direitinho, acesse minha assinatura].
Supondo que você foi na minha assinatura e entendeu como funciona, você pode criar um método get e um método set para a sua coleção da classe.

[code]public class SeuProprioTableModel extends AbstractTableModel {

private List<SuaClasse> suaColecao;
public SeuProprioTableModel(List<SuaClasse> suaColecao) {
    this.suaColecao = suaColecao == null ? new ArrayList<SuaClasse>() : suaColecao;
}

// aqui você retorna todas as linhas da tabela.
public List<SuaClasse> getSuaColecao() {
    return suaColecao;
}

// aqui você retorna uma linha específica.
public SuaClasse getObjetoAt(int rowIndex) {
    return suaColecao.get(rowIndex);
}

// aqui você pode retornar várias linhas de uma única vez.
// particularmente eu usaria o de cima, mas é só um exemplo.
public List<SuaClasse> getColecaoAt(int... rows) {

    List<SuaClasse> colecaoTemp = new ArrayList<SuaClasse>();
    for (int row : rows) {
        colecaoTemp.add(suaColecao.get(row));
    }
    return colecaoTemp;
}

// aqui você seta os dados novos na tabela e avisa que estes foram trocados.
public void setSuaColecao(List<SuaClasse> suaColecao) {

    this.suaColecao = suaColecao;
    fireTableDataChanged();
}

// aqui você adiciona uma única linha na tabela.
public void addObjeto(SuaClasse objeto) {

    this.suaColecao.add(objeto);
    fireTableRowsInserted(suaColecao.size(), suaColecao.size());
}

// aqui você remove um objeto de uma linha da tabela.
public void removeObjeto(int rowIndex) {

    this.suaColecao.remove(rowIndex);
    fireTableRowsDeleted(rowIndex, rowIndex);
}

}[/code]

Agora, você pode criar um modelo para cada uma das tabelas e, no evento de um botão ou qualquer componente que passará as linhas de uma tabela para a outra, tratar isso.

public Formulario extends JFrame {

    private SeuProprioTableModel modeloTabelaUm, modeloTabelaDois;
    private JTable tabelaUm, tabelaDois;
    private JButton buttonTransferir;
 
    public Formulario() {

        List<SuaClasse> colecao = new List<SuaClasse>();
        // preencha a coleção com alguns dados para você ver como funciona.

        modeloTabelaUm = new SeuProprioTableModel(colecao);
        modeloTabelaDois = new SeuProprioTableModel(null); // ela começa vazia.


        tabelaUm = new JTable(modeloTabelaUm);
        tabelaDois = new JTable(modeloTabelaDois);
        buttonTransferir.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent event) {
 
                // para cada linha selecionada...
                for (int row : tabelaUm.getSelectedRows) {
               
                    SuaClasse objeto = modeloTabelaUm.getObjetoAt(row); // pego o objeto de uma linha...
                    modeloTabelaDois.addObjeto(objeto); // adiciono na tabelaDois...
                    modeloTabelaUm.removeObjeto(row); // e removo da tabelaUm!
                }
            }
        });
    }
}

Sacou a ideia?
Espero ter ajudado. Fique com Deus, abraço!

deu este erro pco

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 87 > 0
        at java.util.Vector.insertElementAt(Vector.java:594)

fis da maneira que falo coloquei esse metodo no actionperformed do botao e troquei o nome da variavel da jtable

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 0
        at java.util.Vector.removeElementAt(Vector.java:554)

A ideia é mais ou menos essa. Tá faltando coisa, mas tira isso por base.