JTable linhas não aparecem ao adicionar dados

2 respostas
Blakevenom

Pessoal sou iniciante em java e estou com esse problema , no banco o dado adiciona corretamente mas na tabela não acontece nada

o método que estou usando para adicionar todos os dados cadastrados é o adicionaLista(lista);

/**
 * 
 */
package br.com.fatec.finantec.telas;

import java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
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.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

import br.com.fatec.finantec.DAO.DespesaDAO;
import br.com.fatec.finantec.jdbc.RecuperarDadosBD;
import br.com.fatec.finantec.modelo.DespesaVO;
import br.com.fatec.finantec.modelo.GrupoVO;
import br.com.fatec.finantec.validacao.Utilidades;

/**
 * @author Fabio
 *
 */
public class CadastroDespesaVIEW extends JFrame implements TableModelListener, Serializable{
	
	private JLabel lblDescricaoFrameCadastroDespesa;
	private Integer codigoGrupoPesquisado;	
	private JPanel pnCodigoDespesa;
	private JPanel pnNomeGrupo;
	private JPanel pnNomeDespesa;
	private JTextField txtCodigoDespesa;
	private JComboBox cbboxNomeGrupo;
	private JTextField txtNomeDespesa;	
	private JPanel pnCadastroDespesas;	
	private JPanel pnBotoesCadastroDespesas;
	private JButton btAdicionarDespesa;
	private JButton btAlterarDespesa;
	private JButton btExcluirDespesa;
	private JButton btLimparDespesa;
	private JButton btCancelarDespesa;
	private JLabel lblAdicionarDespesa;
	private JLabel lblAlterarDespesa;
	private JLabel lblExcluirDespesa;
	private JLabel lblLimparDespesa;
	private JLabel lblCancelarDespesa;	
	private JPanel pnTabelaDespesas;
	private JScrollPane scrollPaneTabelaDespesas;
	private JTable tabelaDespesas;
	private TableModelDespesa modeloTabelaDespesa;
	private JButton btCadastrarNovoGrupo = null;
	private JLabel lblAtalhoCadastroGrupo = null;


	public CadastroDespesaVIEW(){
		
	}
	
	private JLabel getLblDescricaoFrameCadastroDespesa(){
		if(lblDescricaoFrameCadastroDespesa == null){
			lblDescricaoFrameCadastroDespesa = new JLabel();
			lblDescricaoFrameCadastroDespesa.setBounds(0,-6,1000,45);			
			lblDescricaoFrameCadastroDespesa.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/ccf.png")));
			lblDescricaoFrameCadastroDespesa.setText("");
		}		
		return lblDescricaoFrameCadastroDespesa;		
	}
	
	
	
	private JPanel getPnBotoesCadastroDespesas() {
		if(pnBotoesCadastroDespesas == null){
			pnBotoesCadastroDespesas = new JPanel();
			pnBotoesCadastroDespesas.setLayout(null);
			pnBotoesCadastroDespesas.add(getBtAdicionarDespesa());
			pnBotoesCadastroDespesas.add(getBtAlterarDespesa());
			pnBotoesCadastroDespesas.add(getBtExcluirDespesa());
			pnBotoesCadastroDespesas.add(getBtLimparDespesa());
			pnBotoesCadastroDespesas.add(getBtCancelarDespesa());
			pnBotoesCadastroDespesas.add(getLblAdicionarDespesa());
			pnBotoesCadastroDespesas.add(getLblAlterarDespesa());
			pnBotoesCadastroDespesas.add(getLblExcluirDespesa());
			pnBotoesCadastroDespesas.add(getLblLimparDespesa());
			pnBotoesCadastroDespesas.add(getLblCancelarDespesa());
			pnBotoesCadastroDespesas.setBorder(BorderFactory.createLineBorder(SystemColor.controlShadow, 1));
			pnBotoesCadastroDespesas.setBackground(Color.white);			
			pnBotoesCadastroDespesas.setBounds(295, 92, 180, 235);
		}
		return pnBotoesCadastroDespesas;
	}
	
	private JButton getBtAdicionarDespesa() {
		if(btAdicionarDespesa == null){
			btAdicionarDespesa = new JButton("");			
			btAdicionarDespesa.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/add-32.png")));
			btAdicionarDespesa.setBounds(15, 15, 30, 30);
			btAdicionarDespesa.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					//TODO Bloco catch gerado automaticamente
					DespesaVO despesaVO = criarDespesaVO();
					DespesaDAO despesaDAO = new DespesaDAO();
					
					
					try {
							despesaDAO.cadastrarDespesa(despesaVO);
																				
					} catch (Exception e) {						
							e.printStackTrace();
					}
					System.out.println("CódigoDespesa: "+despesaVO.getId_despesa());
					System.out.println("NomeDespesa: "+despesaVO.getDesp_name());
					System.out.println("ID_GRUPO: "+despesaVO.getId_grupo());
					System.out.println("Grupo_Referente: "+despesaVO.getGrupoReferente());
						
					getModeloTabelaDespesa().addRow(despesaVO);
					//limparCampos();
				}
				
			});
		}
		return btAdicionarDespesa;
	}

	private JButton getBtAlterarDespesa() {
		if(btAlterarDespesa == null){
			btAlterarDespesa = new JButton();
			btAlterarDespesa.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/Gnome-View-Refresh-32.png")));
			btAlterarDespesa.setBounds(15,60,30,30);
			btAlterarDespesa.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
//					 TODO Bloco catch gerado automaticamente
				}
				
			});
		}
		return btAlterarDespesa;
	}

	private JButton getBtExcluirDespesa() {
		if(btExcluirDespesa == null){
			btExcluirDespesa = new JButton();
			btExcluirDespesa.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/delete_32_x32.png")));
			btExcluirDespesa.setBounds(15,105,30,30);
			btExcluirDespesa.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					// TODO Bloco catch gerado automaticamente
				}
				
			});
		}
		return btExcluirDespesa;
	}
	private JButton getBtLimparDespesa() {
		
		if (btLimparDespesa == null) {
			btLimparDespesa = new JButton();
			btLimparDespesa.setBounds(new Rectangle(15, 150, 30, 30));
			btLimparDespesa.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/Stop-48.png")));
			btLimparDespesa.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					limparCampos();
					getTabelaDespesas().clearSelection();
					getTxtNomeDespesa().requestFocus();
				}
				
			});
		}
		return btLimparDespesa;
	}
	private JButton getBtCancelarDespesa() {
		if (btCancelarDespesa == null) {
			btCancelarDespesa = new JButton();
			btCancelarDespesa.setBounds(new Rectangle(15, 195, 30, 30));
			btCancelarDespesa.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/button_cancel-32.png")));
			btCancelarDespesa.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					dispose();
				}
				
			});
		}
		return btCancelarDespesa;
	}
	private JLabel getLblAdicionarDespesa() {
		if(lblAdicionarDespesa == null){
			lblAdicionarDespesa = new JLabel("Adicionar Despesa");
			lblAdicionarDespesa.setBounds(60,20,110,20);
		}
		return lblAdicionarDespesa;
	}

	private JLabel getLblAlterarDespesa() {
		if(lblAlterarDespesa == null){
			lblAlterarDespesa = new JLabel("Alterar Despesa");
			lblAlterarDespesa.setBounds(60,65,110,20);
		}
		return lblAlterarDespesa;
	}

	private JLabel getLblExcluirDespesa() {
		if(lblExcluirDespesa == null){
			lblExcluirDespesa = new JLabel("Excluir Despesa");
			lblExcluirDespesa.setBounds(60,110,110,20);
		}
		return lblExcluirDespesa;
	}

	private JLabel getLblLimparDespesa() {
		if(lblLimparDespesa == null){
			lblLimparDespesa = new JLabel("Limpar");
			lblLimparDespesa.setBounds(60,155,110,20);
		}
		return lblLimparDespesa;
	}

	private JLabel getLblCancelarDespesa() {
		if(lblCancelarDespesa == null){
			lblCancelarDespesa = new JLabel("Cancelar");
			lblCancelarDespesa.setBounds(60,200,110,20);
		}
		return lblCancelarDespesa;
	}

	private JPanel getPnTabelaDespesas() {
		if(pnTabelaDespesas == null){
			pnTabelaDespesas = new JPanel();
			pnTabelaDespesas.setLayout(null);
			pnTabelaDespesas.setBounds(15, 350, 463, 220);
			pnTabelaDespesas.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(SystemColor.textHighlight, 1), "Despesas Cadastradas", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Tahoma", Font.BOLD, 12), new Color(51, 51, 51)));
			pnTabelaDespesas.add(getTabelaDespesas());
			pnTabelaDespesas.add(getScrollPaneTabelaDespesas());
			
			
			
		}
		return pnTabelaDespesas;
	}
	private JPanel getPnCodigoDespesa(){
		if(pnCodigoDespesa == null){
			pnCodigoDespesa = new JPanel();
			pnCodigoDespesa.setLayout(null);
			pnCodigoDespesa.setBounds(15,35,230,40);
			pnCodigoDespesa.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(SystemColor.textHighlight, 1), "Código da Despesa", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Tahoma", Font.PLAIN, 11), new Color(51, 51, 51)));
			pnCodigoDespesa.add(getTxtCodigoDespesa());
			
		}
		return pnCodigoDespesa;
	}	
	
	
	private JPanel getPnNomeGrupo() {
		if(pnNomeGrupo == null){
			pnNomeGrupo = new JPanel();
			pnNomeGrupo.setLayout(null);
			pnNomeGrupo.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(SystemColor.textHighlight, 1), "Nome do Grupo", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Tahoma", Font.PLAIN, 11), new Color(51, 51, 51)));
			pnNomeGrupo.setBounds(15,85,230,40);
			pnNomeGrupo.add(getCbboxNomeGrupo());
			
		}
		return pnNomeGrupo;
	}

	private JPanel getPnNomeDespesa() {
		if(pnNomeDespesa == null){
			pnNomeDespesa = new JPanel();
			pnNomeDespesa.setLayout(null);
			pnNomeDespesa.setBounds(15,135,230,40);
			pnNomeDespesa.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(SystemColor.textHighlight, 1), "Nome da Despesa", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Tahoma", Font.PLAIN, 11), new Color(51, 51, 51)));
			pnNomeDespesa.add(getTxtNomeDespesa());
		}
		return pnNomeDespesa;
	}
	
	private JTextField getTxtCodigoDespesa() {
		if(txtCodigoDespesa == null){
			txtCodigoDespesa = new JTextField();
			txtCodigoDespesa.setBounds(10,15,80,20);
			txtCodigoDespesa.setEditable(false);
		}
		return txtCodigoDespesa;
	}
	
	
	/*public Integer getCodigoGrupoPesquisado(){
		return codigoGrupoPesquisado;
	}*/
	public  void preencheComboBox(){  
			       
		    java.util.List<GrupoVO> list_grupo = new java.util.ArrayList<GrupoVO>();  
		       
		     // Recebendo a Consulta do Banco de Dados  
		     list_grupo = DespesaDAO.consultarTodosGruposComboBox();            
		       
		     getCbboxNomeGrupo().setModel(new javax.swing.DefaultComboBoxModel());  
		     		     
		     
		     getCbboxNomeGrupo().addItem("<Selecione um Grupo>");
		     // Preenchendo o JComboBox                  
		     for (GrupoVO grupoVO : list_grupo){  
		         getCbboxNomeGrupo().addItem(grupoVO.getNomeGrupo());		         
		     }
		     
	}
	
	private JComboBox getCbboxNomeGrupo() {
		
		if(cbboxNomeGrupo == null){
			//cbboxNomeGrupo = new JComboBox(DespesaDAO.consultarTodosGruposComboBox().toArray());
			cbboxNomeGrupo = new JComboBox();
			cbboxNomeGrupo.setBounds(10, 15, 190, 20);
			cbboxNomeGrupo.setFont(new Font("Verdana", Font.PLAIN, 12));
			preencheComboBox();
			cbboxNomeGrupo.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					
					java.util.List<GrupoVO> list_grupo = new java.util.ArrayList<GrupoVO>();  
				       
				     // Recebendo a Consulta do Banco de Dados  
				    list_grupo = DespesaDAO.consultarTodosGruposComboBox();
					
				    
				    // Preenchendo o JComboBox                  
				    for (GrupoVO grupoVO : list_grupo){  
				         if(getCbboxNomeGrupo().getSelectedItem().equals(grupoVO.getNomeGrupo())){
				        	 codigoGrupoPesquisado = grupoVO.getCodigoGrupo();
				         }
				    }
				}
				
			});
		}
		return cbboxNomeGrupo;
	}

	private JTextField getTxtNomeDespesa() {
		if(txtNomeDespesa == null){
			txtNomeDespesa = new JTextField();
			txtNomeDespesa.setBounds(10, 15, 190, 20);
			
		}
		return txtNomeDespesa;
	}
	
	
	
	
	private JPanel getPnCadastroDespesas() {
		if(pnCadastroDespesas == null){
			pnCadastroDespesas = new JPanel();
			pnCadastroDespesas.setLayout(null);
			pnCadastroDespesas.setBounds(15, 85, 265, 244);
			pnCadastroDespesas.add(getPnCodigoDespesa());			
			pnCadastroDespesas.add(getPnNomeGrupo());
			pnCadastroDespesas.add(getPnNomeDespesa());
			pnCadastroDespesas.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(SystemColor.textHighlight, 1), "Dados Despesa", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Tahoma", Font.BOLD, 12), new Color(51, 51, 51)));
			pnCadastroDespesas.setName("Adicionar Grupos");
		}
		return pnCadastroDespesas;
	}

	private JScrollPane getScrollPaneTabelaDespesas() {
		if(scrollPaneTabelaDespesas == null){
			scrollPaneTabelaDespesas = new JScrollPane();
			scrollPaneTabelaDespesas.setBounds(new Rectangle(15, 25, 433, 180));
			scrollPaneTabelaDespesas.setViewportView(getTabelaDespesas());
		}
		return scrollPaneTabelaDespesas;
	}
	
	private TableModelDespesa getModeloTabelaDespesa(){
		if(modeloTabelaDespesa == null){
			modeloTabelaDespesa = new TableModelDespesa();
			modeloTabelaDespesa.addTableModelListener(getTabelaDespesas());
			modeloTabelaDespesa.adicionaLista(RecuperarDadosBD.listarDespesas());
			
		}
		return modeloTabelaDespesa;
	}

	private JTable getTabelaDespesas() {
		if(tabelaDespesas == null){
			tabelaDespesas = new JTable(new TableModelDespesa());
			tabelaDespesas.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

				public void valueChanged(ListSelectionEvent arg0) {
					int linhaSelecionada = getTabelaDespesas().getSelectedRow();
					//System.out.println(linhaSelecionada);
					
					TableModelDespesa model = ((TableModelDespesa)getTabelaDespesas().getModel());
					
                    //Cast de objeto
					//String nome = (String)((TableModelEstado)getTabelaEstados().getModel()).getValueAt(linhaSelecionada, 0);
					if(linhaSelecionada >= 0){
						String codigoDespesa = (String)model.getValueAt(linhaSelecionada, 0);
						String nomeDespesa = (String)model.getValueAt(linhaSelecionada, 1);
						String gruporeferente = (String)model.getValueAt(linhaSelecionada, 2);
					    
						getTxtCodigoDespesa().setText(codigoDespesa);
						getTxtNomeDespesa().setText(nomeDespesa);
						getCbboxNomeGrupo().setSelectedItem(gruporeferente);
					}
				}
				
				
			});
			
		}
		return tabelaDespesas;
	}
	
	public void iniciarTela(){
		this.setTitle("Cadastrar Despesa");
		this.setLayout(null);
		this.getContentPane().add(getPnCadastroDespesas());
		this.getContentPane().add(getBtCadastrarNovoGrupo());
		this.getContentPane().add(getLblAtalhoCadastroGrupo());
		this.getContentPane().add(getLblDescricaoFrameCadastroDespesa());
		this.getContentPane().add(getPnBotoesCadastroDespesas());
		this.getContentPane().add(getPnTabelaDespesas());
		this.setLocation(180, 80);
		this.setSize(500, 630);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setResizable(false);
		this.setVisible(true);
	}
	
	/**
	 * This method initializes btCadastrarNovoGrupo	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtCadastrarNovoGrupo() {
		if (btCadastrarNovoGrupo == null) {
			btCadastrarNovoGrupo = new JButton();
			btCadastrarNovoGrupo.setIcon(new ImageIcon(getClass().getResource("/br/com/fatec/finantec/imagens/briefcase-icon.png")));
			btCadastrarNovoGrupo.setBounds(new Rectangle(300, 45, 40, 27));
			btCadastrarNovoGrupo.setText("");
			btCadastrarNovoGrupo.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					CadastroGrupoVIEW cadastroGrupoVIEW = new CadastroGrupoVIEW();
					cadastroGrupoVIEW.iniciarTela();
				}
				
			});
		}
		return btCadastrarNovoGrupo;
	}

	/**
	 * This method initializes lblAtalhoCadastroGrupo	
	 * 	
	 * @return javax.swing.JLabel	
	 */
	private JLabel getLblAtalhoCadastroGrupo() {
		if (lblAtalhoCadastroGrupo == null) {
			lblAtalhoCadastroGrupo = new JLabel();
			lblAtalhoCadastroGrupo.setText("Cadastrar Novo Grupo");
			lblAtalhoCadastroGrupo.setBounds(new Rectangle(343, 50, 144, 18));
		}
		return lblAtalhoCadastroGrupo;
	}

	public static void main(String[] args) {
		CadastroDespesaVIEW cadastroDespesaVIEW = new CadastroDespesaVIEW();
		cadastroDespesaVIEW.iniciarTela();		
	}
	
	private void limparCampos(){
		getTxtCodigoDespesa().setText("");
		getTxtNomeDespesa().setText("");
		getCbboxNomeGrupo().setSelectedItem("<Selecione um Grupo>");
		
	}
	
	
public class TableModelDespesa extends AbstractTableModel{
		
		
		

		/**
		 * Essa lista armazenará os objetos do tipo {@link Despesa} atualmente
		 * exibidos na tabela.
		 */
		private List<DespesaVO> despesas;
		private String[] cabecalho = new String[]{"Código","Despesa","Grupo Referente"};
		// ==============================================================
		// Construtores.
		// ==============================================================

		/**
		 * Constutor que simplesmente instancia o nosso {@link List} que usaremos
		 * para guardar os valores.
		 */
		public TableModelDespesa() {
			// no construtor, instanciamos o List
			despesas = new ArrayList<DespesaVO>();
		}

		/**
		 * Criamos um construtor de conveniência para já popular a lista.
		 * 
		 * @param lista
		 *            a lista de clientes a ser adicionada.
		 */
		public TableModelDespesa(List<DespesaVO> listaDespesas) {
			this();
			despesas.addAll(listaDespesas);
		}
		
		/*@Override
		public Class<?> getColumnClass(int coluna) {
			// todas as colunas representam uma String
			return String.class;
		}*/

		
		/**
		 * Método padrão utilizado pela JTable para a criação das colunas.
		 * @return int - Quantidade de colunas na tabela.
		 */
		public int getColumnCount() {			
			return cabecalho.length;
		}	
		/**
		 * Método padrão utilizado pela JTable para a nomeação das colunas(cabeçalho).
		 * @return String - Nome da coluna referente ao parametro.
		 */
		public String getColumnName(int col){  
			return cabecalho[col];  
		}

		
		public int getRowCount() {
			// retorna o número de linhas, ou seja, a quantidade de entradas na
			// nossa lista.
			return despesas.size();
		}

		
		/**
		 * Método padrão utilizado para recuperar dados de uma determinada celula
		 * @param int linha - Linha onde está o valor
		 * @param int coluna - Coluna onde está o valor
		 * @return Object - Dado localizado na celula em questão
		 */
		public Object getValueAt(int linha, int coluna) {
			
			// vai retornar o valor de determinada célula. A linha representa a
			// posição da Despesa na nossa lista e a coluna vai ser: 1 - codigo, 2 -
			// despesa e 3 - grupo referente
			// primeiro vamos pegar a Despesa da linha
			DespesaVO despesaVO = despesas.get(linha);
			// façamos um switch
			switch (coluna) {
			case 0:
				return despesaVO.getId_despesa(); // retornamos o codigo
			case 1:
				return despesaVO.getDesp_name(); // retornamos a despesa
			case 2:
				return despesaVO.getGrupoReferente(); // retornamos o grupo referente			
			default:
				return null; // isso nunca deve ocorrer, pois temos só 3 colunas
			}
		}

		@Override
		public boolean isCellEditable(int rowIndex, int columnIndex) {
			if(columnIndex == 1){
				return true;
			}
			return false;
		}
		
		/**
		 * Método responsável por setar valores em determinadas celulas
		 * Usado quando se altera o valor de alguma linha
		 * @param Object valor - Valor a ser adicionado na célula referente a linha
		 * e coluna informadas
		 * @param int linha - Linha onde será adicionado o valor vindo como parâmetro
		 * @param int coluna - Coluna onde será adicionado o valor vindo como parâmetro 
		 */
		public void setValueAt(Object valor,int linha, int coluna) {
			// aqui devemos atualizar o valor de nossos Grupos
			// vemos em qual linha ele está
			DespesaVO despesaVO = despesas.get(linha);
			// e vemos o que será atualizado
			switch (coluna) {
			case 0:
				despesaVO.setId_despesa(Integer.parseInt((String)valor)); // mudamos o codigo
				break;
			case 1:
				despesaVO.setDesp_name(valor.toString()); // mudamos a despesa
				break;
			case 2:
				despesaVO.setGrupoReferente(((String)valor)); // mudamos o grupo
				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.
		// ==============================================================
		
		/**
		 * Método responsável por adicionar linhas na tabela
		 * @param dadosLinha
		 */
		public void addRow(DespesaVO despesaVO){
			
				despesas.add(despesaVO);
				int linha = despesas.size() -1;
				fireTableRowsInserted(linha, linha);
			
			
		}
		
		/**
		 * 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 removeRow(int linhaASerRemovida){
			if(linhaASerRemovida == -1){
				JOptionPane.showMessageDialog(getContentPane(), "Impossível excluir\n\nTabela sem registros","Tabela Vazia",JOptionPane.WARNING_MESSAGE);
			}else{
				despesas.remove(linhaASerRemovida);
				fireTableRowsDeleted(linhaASerRemovida, linhaASerRemovida);
			}
		}
		

		/**
		 * Retorna o índice de determinado cliente.
		 */
		public int getIndice(DespesaVO despesaVO) {
			return despesas.indexOf(despesaVO);
		}

		/**
		 * Adiciona todos os clientes na lista à este modelo.
		 */
		public void adicionaLista(List<DespesaVO> listaDespesas) {
			
			int i = despesas.size();
			despesas.addAll(listaDespesas);
			fireTableRowsInserted(i, i + listaDespesas.size());
		}

		/**
		 * Esvazia a lista.
		 */
		public void limpaLista() {
			int i = despesas.size();
			despesas.clear();
			fireTableRowsDeleted(0, i - 1);
		}
		
		
	}

	public DespesaVO criarDespesaVO(){
		
		DespesaVO despesaVO = new DespesaVO();		
				
		if(getTxtCodigoDespesa().getText().equals("")){
			despesaVO.setId_despesa(Utilidades.generateId());			
		}else{
			despesaVO.setId_despesa(Integer.parseInt(getTxtCodigoDespesa().getText()));		
		}	     
		despesaVO.setDesp_name(getTxtNomeDespesa().getText());
		despesaVO.setId_grupo(codigoGrupoPesquisado);
        despesaVO.setGrupoReferente((String)getCbboxNomeGrupo().getSelectedItem());
		
		
		return despesaVO;
	}
	
	
	
		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
		// [telefone removido] representa possível mudança em toda a tabela
		System.out.printf("%s: %d-%d, %d%n", tipo, e.getFirstRow(), e
				.getLastRow(), e.getColumn());
		}

}

O que pode estar faltando?

2 Respostas

ViniGodoy

O problema está na linha 407:

Ocorre pq vc está criando dois models, um nesse construtor, outro no método getModeloTabelaDespesa().
Ou seja, que está sendo exibido na tabela não é o mesmo que está sendo usado no resto do código.

Arrume a linha para:

Blakevenom

é mesmo , o erro era esse

vlw por me ajudar

Criado 20 de novembro de 2010
Ultima resposta 20 de nov. de 2010
Respostas 2
Participantes 2