Problem z odświeżaniem JTable

0

Witam,
Pomimo przeczytania chyba wszystkich postów na ten temat, nie udało mi się rozwiązać problemu.

  private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
    

        jPanel3.setVisible(false);
        jPanel2.setVisible(true);

        List<Klient> klienci = wypiszKlientow();
        String columns[]={"Id","Imie","Nazwisko"};
        tModel = new javax.swing.table.DefaultTableModel(columns,klienci.size());
        jTable1.setModel(tModel);
       
        for (Klient klient : klienci) {
               ile++;

                tModel.setValueAt(klient.getId(), ile, 0);
                tModel.setValueAt(klient.getImie(), ile, 1);
                tModel.setValueAt(klient.getNazwisko(), ile, 2);
               }
           
        
            
    }                                          

Problem jest następujący. Mam tabelę, którą uzupełniam danymi z bazy danych. Całość jest wyświetlana po użyciu przycisku z Menu i problem w tym że gdy np. dodam nowe dane do tabeli lub po prostu jeszcze raz użyje przycisku, tabela na Panelu czyści się i wyskakuję poniższy błąd:

2010-09-11 15:46:25 org.jdesktop.application.SessionStorage restoreTree
WARNING: No saved state for javax.swing.JTable[jTable1,0,0,367x0,alignmentX=0.0,alignmentY=0.0, ... ,showVerticalLines=true]
4 [AWT-EventQueue-0] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.3-Final
29 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - Hibernate 3.5.3-Final
33 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - hibernate.properties not found
39 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
52 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
201 [AWT-EventQueue-0] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
224 [AWT-EventQueue-0] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
226 [AWT-EventQueue-0] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
323 [AWT-EventQueue-0] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : model/hibernate.hbm.xml
471 [AWT-EventQueue-0] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
490 [AWT-EventQueue-0] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
598 [AWT-EventQueue-0] INFO org.hibernate.cfg.HbmBinder - Mapping class: model.Klient -> Klient
628 [AWT-EventQueue-0] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
751 [AWT-EventQueue-0] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
754 [AWT-EventQueue-0] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
756 [AWT-EventQueue-0] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
770 [AWT-EventQueue-0] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/moja_baza
774 [AWT-EventQueue-0] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****}
903 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 8.3.11
905 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.3 JDBC3 with SSL (build 603)
948 [AWT-EventQueue-0] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect
989 [AWT-EventQueue-0] INFO org.hibernate.engine.jdbc.JdbcSupportLoader - Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
993 [AWT-EventQueue-0] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
998 [AWT-EventQueue-0] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
1002 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
1005 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
1010 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
1011 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
1014 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
1015 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled
1017 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
1019 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
1021 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
1023 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
1025 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
1027 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
1029 [AWT-EventQueue-0] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
1029 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
1029 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
1029 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1030 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1030 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
1030 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1030 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1048 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout
1049 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1049 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1049 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1049 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1049 [AWT-EventQueue-0] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
1120 [AWT-EventQueue-0] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
1469 [AWT-EventQueue-0] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
1480 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - Running hbm2ddl schema update
1482 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - fetching database metadata
1528 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - updating schema
1620 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.TableMetadata - table found: public.klient
1620 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.TableMetadata - columns: [id, imie, nazwisko]
1620 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.TableMetadata - foreign keys: []
1620 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.TableMetadata - indexes: [klient_pkey]
1621 [AWT-EventQueue-0] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - schema update complete
Hibernate: select klient0_.id as id0_, klient0_.imie as imie0_, klient0_.nazwisko as nazwisko0_ from Klient klient0_
Hibernate: select klient0_.id as id0_, klient0_.imie as imie0_, klient0_.nazwisko as nazwisko0_ from Klient klient0_
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
        at java.util.Vector.elementAt(Vector.java:427)
        at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:648)
        at mrowa.MrowaView.jMenuItem1ActionPerformed(MrowaView.java:483)
        at mrowa.MrowaView.access$1100(MrowaView.java:27)
        at mrowa.MrowaView$7.actionPerformed(MrowaView.java:381)
        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:1223)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        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:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        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)

Rozumiem, że program chce umieścić kolejną tabelkę i oczywiście nie ma gdzie i stąd ten błąd, ale jak zrobić żeby on odświeżał ją, lub ewentualnie usuwał i robił nową ??

Z góry dzięki za podpowiedz.

0

hmm, zęby mnie trochę zabolały... jakoś wolę takie rzeczy robić po ludzku: definiując własny model. Ale nie o tym chciałem:

twoja "piękna" zmienna ile jest prywatną składową klasy? I nie jest zerowana przed ruszeniem pętli? No to nie dziwota, że w drugim wywołaniu masz ArrayIndexOutOfBoundsException. Czego innego oczekujesz - zmienna przy pierwszym wywołaniu handlera startuje od zera. I kończy na klienci.size(). Przy drugim... no startuje od tego starego rozmiaru - i od razu wylatujesz za tablicę.

0

heh zgadza się dopatrzyłem się tego wczoraj, ale dzięki za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1