Observador dando erro

1 resposta
0

tenho qeu implementar um observer um uma table model, e deixar outra normal...

private void tableSelectionChanged() {
  
        if (selectedDownload != null)
            selectedDownload.deleteObserver(gerenciador.this);
        
        if (!clearing) {
            selectedDownload = tableModel.getDownload(jTable1.getSelectedRow());
            selectedDownload.addObserver(gerenciador.this);
            updateButtons();
        }
    }

são 2 models em uma jtable

jTable1.setModel(tableModel);
             tableSelectionChanged();

ao chamar a model da esse erro

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
        at java.util.ArrayList.get(ArrayList.java:324)
        at spiidofansub.DownloadsTableModel.getDownload(DownloadsTableModel.java:37)
        at spiidofansub.gerenciador.tableSelectionChanged(gerenciador.java:431)
        at spiidofansub.gerenciador.arvore(gerenciador.java:208)
        at spiidofansub.gerenciador.access$000(gerenciador.java:26)
        at spiidofansub.gerenciador$1.mouseClicked(gerenciador.java:84)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6266)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

e quando vou selecionar a outra model

chamo somente por tabelapesquisa();

e depois volto a chamar a model tablemodel da esse erro

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
        at java.util.ArrayList.RangeCheck(ArrayList.java:547)
        at java.util.ArrayList.get(ArrayList.java:322)
        at spiidofansub.DownloadsTableModel.getDownload(DownloadsTableModel.java:37)
        at spiidofansub.gerenciador.tableSelectionChanged(gerenciador.java:432)
        at spiidofansub.gerenciador.arvore(gerenciador.java:207)
        at spiidofansub.gerenciador.access$000(gerenciador.java:26)
        at spiidofansub.gerenciador$1.mouseClicked(gerenciador.java:84)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6266)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

1 Resposta

0

bem consegui ajeitar isso, bem fiz outra maneira

criei um evento no jTable que quando o model for o tablemodel ele chama o observador quando não ele sai do metodo e fica normal :slight_smile: funcionou perfeitamente

Criado 19 de janeiro de 2010
Ultima resposta 19 de jan. de 2010
Respostas 1
Participantes 1