ken420
Outubro 9, 2011, 9:31am
#1
Tenho minhas linhas selecionadas em uma jtable
int[] selecao = tabelaOriginal.getSelectedRows();
preciso adiciona esta selecao em uma tabela
tabelaDestino.addRow(?????);//aqui ele pede um object tem como eu converter o (int[]selecao) em um object para passar as linhas selecionadas para a tabela destino?
Grato.
O addRow serve para adicionar linhas de dados em uma tabela.
Você precisa:
a) Perguntar ao model da tabela que tem a seleção quais dados estão nessa tabela;
b) Fazer um for sobre todas as linhas;
c) Adiciona-las na tabela seguinte.
Você tem um model próprio, não tem? Ou está fazendo a besteira de usar o DefaultTableModel?
PS: Procure prestar atenção ao postar os títulos de seu tópico, e evite títulos com inteiros em letras maiúsculas. O ideal é que seu título seja mais descritivo, como por exemplo “Copiar linhas de um JTable para outro”.
Dê uma lida: http://www.istf.com.br/perguntas/
São regras de etiqueta básicas em qualquer fórum.
ken420
Outubro 9, 2011, 10:28am
#4
estou usando modelo proprio sim, tem algum exemplo?
Nesse caso, adicione um método no seu modelo para ler os dados selecionados:
[code]public List<SuaClasse> get(int[] valores) {
if (valores == null || valores.length == 0)
return Collections.emptyList();
List<SuaClasse> retorno = new ArrayList<SuaClasse>();
for (int valor : valores) {
retorno.add(lista.get(valor));
}
}[/code]
E outro para adicionar uma lista de dados:
[code]public void addAll(List<SuaClasse> valores) {
if (valores == null || valores.size() == 0)
return;
int first = lista.size();
for (SuaClasse valor : valores) {
lista.add(valor);
fireTableRowsInserted(first, first + valores.size());
}[/code]
Aí basta fazer, no seu JButton:
ken420
Outubro 9, 2011, 1:20pm
#6
Viny na minha modeltable suaclasse e lista ficaro sem origem suaclasse seria no caso customerbean? e lista? veja meu codigo se fis algo errado
package br.com.cart.model;
//imports
import br.com.cart.bean.CustomerBean;
import javax.swing.table.DefaultTableModel;
import java.text.SimpleDateFormat;
import java.util.List;
public class ModelTableCustomer extends DefaultTableModel {
private List dados = null;
SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
public ModelTableCustomer(List dados) {
this.dados = dados;
}
@Override
public int getColumnCount() {
return 5;
}
@Override
public int getRowCount() {
if (this.dados == null) {
return 0;
} else {
return this.dados.size();
}
}
@Override
public Object getValueAt(int row, int column) {
CustomerBean cl = (CustomerBean) this.dados.get(row);
Object retorno = null;
if (column == 0) {
retorno = cl.getId();
} else if (column == 1) {
retorno = cl.getName();
} else if (column == 2) {
retorno = cl.getDateI();
} else if (column == 3) {
retorno = cl.getDataN();
} else if (column == 4) {
retorno = cl.getEmpresa();
}
return retorno;
}
@Override
public String getColumnName(int column) {
String columnName = "";
if (column == 0) {
columnName = "Código";
} else if (column == 1) {
columnName = "Nome";
} else if (column == 2) {
columnName = "Data de Inc";
} else if (column == 3) {
columnName = "Dt Nascimento";
} else if (column == 4) {
columnName = "Empresa";
}
return columnName;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public List<SuaClasse> get(int[] valores) {
if (valores == null || valores.length == 0) {
return Collections.emptyList();
}
List<SuaClasse> retorno = new ArrayList<SuaClasse>();
for (int valor : valores) {
retorno.add(lista.get(valor));
}
}
public void addAll(List<SuaClasse> valores) {
if (valores == null || valores.size() == 0) {
return;
}
int first = lista.size();
for (SuaClasse valor : valores) {
lista.add(valor);
fireTableRowsInserted(first, first + valores.size());
}
}
}
vlw por sua atenção!
Sim, SuaClasse seria o CustomBean e a lista seria o dados.
Uma coisa, por que seu List está sem o tipo List<CustomBean>?
Use os generics para tornar o código mais seguro e evitar os casts.