JTable não seta modelo

3 respostas
hstreb

Ola galera…
criei um metodo para atualizar uma tabela, só q quando faço…

tabela.setModel(modelo);

da pau…

3 Respostas

hstreb
aqui vai os codigos...
public Object[][] getDados()
	{
		Object[][] dados = new Object[lista.size()][4];
		for (int i = 0; i < lista.size(); i++)
		{
			System.out.println("getDados()");
			Administrador a = (Administrador)lista.get(i);
			dados[i][0] = a.getCodigo();
			dados[i][1] = a.getLogin();
			dados[i][2] = a.getNome();
			dados[i][3] = a.getSenha();
		}
		return dados;
	}
	
	public void atualizaTabela()
	{
        DefaultTableModel modelo = (new DefaultTableModel(getDados(), new Administrador().getAtributos().toArray())
	    {
	    	public boolean isCellEditable(int row, int column) 
	        {   
	            return false;   
	        }
	    });
		System.out.println("antes tabela.setModel();");        
        tabela.setModel(modelo); 
		System.out.println("depois tabela.setModel();");
    }
e a saida do programa(com testes):
getDados()
getDados()
getDados()
antes tabela.setModel();
depois tabela.setModel();
INSERT INTO ADMINISTRADOR (LOGIN, NOME, SENHA) VALUES ('sfh', 'dfh', 'dfhj')
getDados()
getDados()
getDados()
getDados()
antes tabela.setModel();
depois tabela.setModel();
DELETE FROM ADMINISTRADOR WHERE CODADMINISTRADOR = 47
banco.deleta(a) -> 0
antes lista.clear()
lista.size() = 4
depois lista.clear()
lista.size() = 0
lista = new Banco().getAdministrador();
lista.size() = 3
antes atualizaTabela()
getDados()
getDados()
getDados()
antes tabela.setModel();
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.Vector.elementAt(Vector.java:430)
    at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632)
    at javax.swing.JTable.getValueAt(JTable.java:2638)
    at cadAdministrador$TableSelectionListener.valueChanged(cadAdministrador.java:355)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
    at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:388)
    at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:398)
    at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:559)
    at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:403)
    at javax.swing.JTable.clearSelection(JTable.java:2022)
    at javax.swing.JTable.clearSelectionAndLeadAnchor(JTable.java:2030)
    at javax.swing.JTable.tableChanged(JTable.java:4307)
    at javax.swing.JTable.setModel(JTable.java:3625)
    at cadAdministrador.atualizaTabela(cadAdministrador.java:341)
    at cadAdministrador$2.actionPerformed(cadAdministrador.java:132)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
    at java.awt.Dialog$1.run(Dialog.java:1039)
    at java.awt.Dialog$3.run(Dialog.java:1091)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1089)
    at java.awt.Component.show(Component.java:1419)
    at java.awt.Component.setVisible(Component.java:1372)
    at java.awt.Window.setVisible(Window.java:801)
    at java.awt.Dialog.setVisible(Dialog.java:979)
    at AZno$4.actionPerformed(AZno.java:186)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1216)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1257)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
se alguem puder dar uma maozinha ai...

obrigado

samuray13

Cara você esta estourando o Array.

Da uma olhadinha aqui : http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#simple

ViniGodoy

Não use o DefaultTableModel.
Repetindo:
Não use o DefaultTableModel.
Mais uma vez:
Não use o DefaultTableModel.

No lugar disso, aprenda a fazer direito o seu próprio TableModel.
Aqui está um artigo ótimo, que ensina direitinho como fazer isso:
http://www.informit.com/articles/article.aspx?p=332278

Se depois quiser deixar a tabela editável, também leia esse artigo aqui:
http://www.informit.com/articles/article.aspx?p=333472

Criado 20 de junho de 2008
Ultima resposta 21 de jun. de 2008
Respostas 3
Participantes 3