olá pessoal do Fórum
seguindo algumas dicas do pessoal do fórum criei meu proprio TableModel mais agora não consigo preencher ele com o retorno da minha List
segue o cod até o momento.
view plaincopy to clipboardprint?
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.text.DateFormatter;
/**
* Faremos essa classe implementar TableModelListener para visualizar os eventos
* que ocorrem.
*/
public class ViewConta extends JFrame implements TableModelListener {
private static final long serialVersionUID = 1L;
private TipoTableModel modelo;
private Conta conta;
private ContaTipos ct;
private JTable tabela;
private JScrollPane scrollPane;
private JButton botaoAdicionar;
private JButton botaoRemover;
private JButton botaoLimpar;
private JLabel lCampo1;
private JFormattedTextField campo1;
//private JTextField campo1;
private JLabel lCampo2;
private JFormattedTextField campo2;
private JComboBox combo;
//private JTextField campo2;
public ViewConta() {
instanciaComponentes();
adicionaComponentes();
ajustaJanela();
}
private void instanciaComponentes() {
conta = new Conta();
modelo = new TipoTableModel();
// aqui está a grande jogada!
modelo.addTableModelListener(this);
// ONDE IRÁ PASSAR OS DADOS PARA CONSULTA NO SELECT
//modelo.adicionaLista(TestaConexao.getLista("01/01/2009","31/12/2009","RCV"));
//modelo.adicionaLista(ClienteDAO.listarClientes());
// mudamos o modelo de nossa tabela
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
DateFormatter df = new DateFormatter(format);
tabela = new JTable();
//tabela.setModel(modelo);
scrollPane = new JScrollPane();
scrollPane.setViewportView(tabela);
lCampo1 = new JLabel();
lCampo1.setText("Data Inicial:");
campo1 = new JFormattedTextField(df);
campo1.setValue(new Date());
//campo1 = new JTextField(10);
//campo1.getText();
lCampo2 = new JLabel();
lCampo2.setText("Data Final:");
campo2 = new JFormattedTextField(df);
campo2.setValue(new Date());
//campo2 = new JTextField(10);
//campo2.getText();
combo = new JComboBox();
for (String tipo : conta.getLista()) {
combo.addItem(tipo);
}
//combo.addItem("RCV");
//combo.addItem("SND");
botaoAdicionar = new JButton();
botaoAdicionar.setText("Buscar");
botaoAdicionar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//nesse caso, simplesmente adiciona um novo cliente aleatório
List<Qtd> array = ct.contaTipo();
if (array.size()!= 0){
modelo.adicionaLista(array); // [i]nesta Linha me retorna o erro[/i]
}else{
JOptionPane.showMessageDialog(null, "Não há resultados");
}
}
});
botaoRemover = new JButton();
botaoRemover.setText("Remover");
botaoRemover.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// remove o cliente selecionado
/* int indice = tabela.getSelectedRow();
if (indice != -1) {
modelo.remove(indice);
}*/
}
});
botaoLimpar = new JButton();
botaoLimpar.setText("Limpar");
/*botaoLimpar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modelo.limpaLista();
}
});*/
}
private void adicionaComponentes() {
add(scrollPane);
JPanel panel = new JPanel();
panel.add(lCampo1);
panel.add(campo1);
panel.add(lCampo2);
panel.add(campo2);
panel.add(combo);
panel.add(botaoAdicionar);
//panel.add(botaoRemover);
panel.add(botaoLimpar);
add(panel, BorderLayout.SOUTH);
}
private void ajustaJanela() {
setTitle("Clientes");
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
@Override
public void tableChanged(TableModelEvent e) {
// quando a estrutura de dados muda, imprimimos a informação. Fazer a
// persistência no banco seria o comportamento realista desse método.
String tipo;
switch (e.getType()) {
case TableModelEvent.DELETE:
tipo = "DELETE";
break;
case TableModelEvent.INSERT:
tipo = "INSERT";
break;
case TableModelEvent.UPDATE:
tipo = "UPDATE";
break;
default:
tipo = "?";
break;
}
// mostra uma mensagem:
// TIPO_DE_EVENTO: linhaInicial-linhaFinal, coluna
// -1 representa todas as linhas ou todas as colunas
// 2147483647 representa possível mudança em toda a tabela
System.out.printf("%s: %d-%d, %d%n", tipo, e.getFirstRow(), e
.getLastRow(), e.getColumn());
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
public class TipoTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
/**
* Essa lista armazenará os objetos do tipo {@link Cnpj} atualmente
* exibidos na tablela.
*/
private List<Qtd> clientes;
// ==============================================================
// Construtores.
// ==============================================================
/**
* Constutor que simplesmente instancia o nosso {@link List} que usaremos
* para guardar os valores.
*/
public TipoTableModel() {
// no construtor, instanciamos o List
clientes = new ArrayList<Qtd>();
}
/**
* Criamos um construtor de conveniência para já popular a lista.
*
* @param lista
* a lista de clientes a ser adicionada.
*/
public TipoTableModel(List<Qtd> qtds) {
this();
clientes.addAll(qtds);
}
// ==============================================================
// Métodos implementados.
// ==============================================================
@Override
public Class<?> getColumnClass(int coluna) {
// todas as colunas representam uma String
return String.class;
}
@Override
public int getColumnCount() {
// esse método deve retornar o número de colunas. No caso, 3 (uma para o
// nome, uma para o sobrenome e uma para o apelido).
return 2;
}
@Override
public String getColumnName(int coluna) {
// vamos retornar o nome de cada coluna
switch (coluna) {
case 0:
return "CNPJ"; // o nome da primeira coluna
case 1:
return "Quantidade"; // o nome da segunda
case 2:
//return "Status"; e o da terceira
default:
return ""; // isso nunca deve ocorrer, pois temos só 3 colunas
}
}
@Override
public int getRowCount() {
// retorna o número de linhas, ou seja, a quantidade de entradas na
// nossa lista.
return clientes.size();
}
@Override
public Object getValueAt(int linha, int coluna) {
// vai retornar o valor de determinada célula. A linha representa a
// posição do Cliente na nossa lista e a coluna vai ser: 1 - nome, 2 -
// sobrenome e 3 - apelido
// primeiro vamos pegar o Cliente da linha
Qtd qtd = (Qtd)clientes.get(linha);
// façamos um switch
switch (coluna) {
case 0:
return qtd.getCnpj(); // retornamos o nome
case 1:
return qtd.getQtd(); // retornamos o sobrenome
case 2:
//return qtd.getHora(); e o apelido
default:
return null; // isso nunca deve ocorrer, pois temos só 3 colunas
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// nesse caso, todas as células são editáveis
return true;
}
@Override
public void setValueAt(Object valor, int linha, int coluna) {
// aqui devemos atualizar o valor de nossos Clientes
// vemos em qual linha ele está
Qtd qlq = clientes.get(linha);
// e vemos o que será atualizado
switch (coluna) {
case 0:
qlq.setCnpj(valor.toString()); // mudamos o nome
break;
case 1:
qlq.setQtd(valor.toString()); // mudamos o sobrenome
break;
case 2:
//qlq.setHora(valor.toString()); e o apelido
break;
}
// é importante notificar os listeners a cada alteração
fireTableDataChanged();
}
// ==============================================================
// Até aqui seria o mínimo necessário para um TableModel funcional, mas
// ainda não há métodos para adicionar, remover ou resgatar objetos. Vamos
// criá-los.
// ==============================================================
/**
* Adiciona um novo {@link Cliente} e notifica os listeners que um novo
* registro foi adicionado.
*/
public void adiciona(Qtd c) {
clientes.add(c);
// informamos os listeners que a linha (size - 1) foi adicionada
fireTableRowsInserted(clientes.size() - 1, clientes.size() - 1);
}
/**
* Similar ao {@link #adiciona(Cliente)}, porém para remover. Recebe o
* índice do cliente a ser removido. Se não souber o índice, use o método
* {@link #getIndice(Cliente)} antes.
*/
public void remove(int indice) {
clientes.remove(indice);
fireTableRowsDeleted(indice, indice);
}
/**
* Retorna o índice de determinado cliente.
*/
public int getIndice(Qtd cnpjs) {
return clientes.indexOf(cnpjs);
}
/**
* Adiciona todos os clientes na lista à este modelo.
*/
public void adicionaLista(List<Qtd> lista) {
int i = clientes.size();
clientes.addAll(lista);
fireTableRowsInserted(i, i + lista.size());
}
/**
* Esvazia a lista.
*/
public void limpaLista() {
int i = clientes.size();
clientes.clear();
fireTableRowsDeleted(0, i - 1);
}
}
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class ContaTipos {
@SuppressWarnings("unchecked")
public List<Qtd> contaTipo(){
Qtd qtd = new Qtd();
String tipoQueQuero = "NotaFiscal";
File file = new File("C:\\ArqDivir\\");
File[] files = file.listFiles();
List<String> listaQtdTipo = new ArrayList<String>();
Map<String, Integer> map = new TreeMap<String, Integer>();
List<Qtd> qtds = new ArrayList<Qtd>();
try{
for (File file2 : files) {
String sufix[] = file2.getName().split("\\.");
//listaQtdTipo.add(sufix[2]);
if(sufix[2].equals(tipoQueQuero)){
listaQtdTipo.add(sufix[3]);
}
}
for (String nome : listaQtdTipo) {
Integer count = map.get(nome);
if (count == null)
count = 0;
map.put(nome, count+1);
}
for (String nome : map.keySet()) {
//map.put(nome, map.get(nome));
qtd.setCnpj((String)nome);
qtd.setQtd((String)map.get(nome).toString());
qtds.add(qtd);
System.out.printf("O CNPJ %s se repetiu %s vezes.", nome, map.get(nome));
System.out.println();
}
}catch (Exception e) {
// TODO: handle exception
}
return qtds;
}
}
achei varias explicações para o meu problema mais não consegui resolver por isso criei o tópico se alguém conseguir me ajudar agradeço
abraços