Olá pessoal, estou precisando copiar a o conteúdo de um JTable através do clique no botão.
Alguém já fez este tipo de tarefa?
Olá pessoal, estou precisando copiar a o conteúdo de um JTable através do clique no botão.
Alguém já fez este tipo de tarefa?
faz assim:
jTable.getValueAt(0,0); //pega valor da linha 0 e coluna 0
Eu quero poder selecionar várias linhas e copiar através do clique no botão, será que esta é a maneira mais apropriada?
Além disso eu preciso armazenar as linhas copiadas na memória para o usuário poder colar onde ele quiser, ou seja, em um arquivo txt, doc, xls, etc.
AI depende,o que esta querendo fazer?
Copiar(executar o ctrl c + ctrl v) para a memória o conteúdo de uma seleção no JTable, para que o usuário possa colar este em qualquer arquivo que ele deseje essas linha selecionadas.
Bem,nesse caso você ativa o multi-select da table e usa o código que te mostrei,nunca fiz copia com várias linhas selecionadas mas isso deve resolver.Da uma testada e qualquer coisa posta aqui.
Se você implementou seu próprio TableModel, essa tarefa é bastante simples:
int selectedRows = table.getSelectedRows();
for (int row : selectedRows) {
List<SuaClasse> objetos = new ArrayList<SuaClasse>();
objetos.add(seuModel.get(row));
}
seuOutroModel.addAll(objetos);
Se você está usando o DefaultTableModel, meus pêsames.
Não entendi Vinigodoy.
Na verdade eu estou usando o TableModel, mas não compreendi a idéia do seu código.
:?: :?: :?: :?: :?: :?: :?: :?: :?:
O Jtable tem um método chamado getSelectedRows().
Esse método retorna um array de inteiros, contendo cada linha selecionada.
Aí, para cada linha, você pega o objeto que está nessa linha e adiciona numa lista.
E depois, chama um método no outro model, para adicionar esses objetos lá.
Posta seu TableModel que podemos te ajudar um pouco mais.
Se voce criou um, transferir dados entre eles vai ser trivial.
O TableModel está sendo definido pelo framewaork que estou trabalhando (Swing ADF no JDeveloper da Oracle).
Definição do TableModel na linha 14.
public void jbInit() throws Exception {
bancoFinanceiroTable = new UneditableTable();
//MaquinaDeContexto.setCurrentPanelBinding(this.panelBinding);
this.setLayout(null);
tituloLabel.setText("Banco Financeiro");
tituloLabel.setBounds(new Rectangle(20, 15, 295, 30));
tituloLabel.setFont(new Font("Tahoma", 0, 16));
listadosLabel.setBounds(new Rectangle(15, 70, 230, 10));
bancoFinanceiroScrollPane.setBounds(new Rectangle(15, 85, 365, 130));
bancoFinanceiroScrollPane.getViewport().add(bancoFinanceiroTable, null);
this.add(bancoFinanceiroScrollPane, null);
this.add(listadosLabel, null);
this.add(tituloLabel, null);
bancoFinanceiroTable.setModel((TableModel)panelBinding.bindUIControl("ViewObjBancoFinanceiroGrid1",bancoFinanceiroTable));
// Lista quantos registros constam no grid.
// O listener abaixo atualiza o contador caso registros sejam inseridos ou removidos.
listadosLabel.setText(bancoFinanceiroTable.getRowCount() +
" listados");
panelBinding.addRowSetListener(new JUPanelRowSetListener() {
public void rangeRefreshed(JUIteratorBinding p1,
RangeRefreshEvent p2) {
}
public void rangeScrolled(JUIteratorBinding p1,
ScrollEvent p2) {
}
public void rowInserted(JUIteratorBinding p1,
InsertEvent p2) {
listadosLabel.setText(bancoFinanceiroTable.getRowCount() +
" listados");
}
public void rowDeleted(JUIteratorBinding p1,
DeleteEvent p2) {
listadosLabel.setText(bancoFinanceiroTable.getRowCount() +
" listados");
}
public void rowUpdated(JUIteratorBinding p1,
UpdateEvent p2) {
listadosLabel.setText(bancoFinanceiroTable.getRowCount() +
" listados");
}
public void navigated(JUIteratorBinding p1,
NavigationEvent p2) {
}
});
// SetNames são usados para a gerencia de estado e contexto com as classes ContextXxxxx, ConfiguratorXxxx e Ouvidoria
bancoFinanceiroTable.setName("bancoFinanceiroTable");
bancoFinanceiroTable.addMouseListener(Ouvidoria.getBancoFinanceiroGridListener());
DCIteratorBinding dcib = (DCIteratorBinding)panelBinding.get("ViewObjBancoFinanceiroGrid1Iterator");
Configurator.configureBancoFinanPanelGrid(ContextBancoFinanceiroPanelGrid.INICIAL, this,
MaquinaDeNavegacao.getToolBar(), MaquinaDeNavegacao.getMenuBar(), dcib);
bancoFinanceiroTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
}
Vish… agora voce vai ter que ver como voce resgata um objeto desse model, eu não o conheço.