2012-02-05 2 views
1

J'ai une configuration assez confuse pour un programme qui permet à l'utilisateur de choisir le nombre de lignes dans une table dans un jDialog, d'entrer des données, et retourne les données dans plusieurs tableaux (pour chaque colonne) à la main forme. Je pensais que les choses allaient assez bien jusqu'à la nuit dernière, mais ce matin, la table continue de me donner une erreur NullPointerException, peu importe ce que je fais. J'ai fait quelques recherches en ligne et testé la table plusieurs fois, et je ne sais pas ce qui ne va pas. Voici ce que j'ai: (De plus, les données de la première colonne sont ignorées, ce n'est pas une erreur Ma table a 7 colonnes.)jTable continue de lancer NullPointerException

C'est ici que l'exception est levée; Je suis en train d'accéder aux données de la colonne 7.

public int[] getWDurabilityEV() { 
    int rowCount = tbl_Units.getRowCount(); 
    int[] value = new int[rowCount]; 
    for (int i=0;i<value.length;i++) { 
     value[i] = Integer.parseInt(tbl_Units.getValueAt(i, 6).toString()); 
    } 
    return value; 
} 

Ceci est le bouton clic événement sur la principale forme (l'autre obtient sont exactement comme mon exemple avec un indice de colonne différente, la boucle à la fin est un exemple de la façon dont je mettre à jour le tableau de ma forme principale)

private void EVButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     dialog_EV1 EV1 = new dialog_EV1(new javax.swing.JFrame(), true); 
//setting values 
     EV1.ev1_weapon = ev1_weapon; 
     EV1.ev1_wstrength = ev1_wstrength; 
     EV1.ev1_wrange = ev1_wrange; 
     EV1.ev1_wrate = ev1_wrate; 
     EV1.ev1_wdurability = ev1_wdurability; 
     EV1.ev1_wportability = ev1_wportability; 
     EV1.setData(); 
     EV1.show(); 
//getting values 
     ev1_weapon = EV1.getWeapon(); 
     ev1_wstrength = EV1.getWStrengthEV(); 
     ev1_wrange = EV1.getWRangeEV(); 
     ev1_wrate = EV1.getWRateEV(); 
     ev1_wdurability = EV1.getWDurabilityEV(); 
     ev2_wportability = EV1.getWPortabilityEV(); 
//calcuating values and updating table 
     for (int i=0;i<ev1_weapon.length;i++) { 
      tbl_Units.setValueAt(ev1_weapon[i],i,1); 
     } 
    } 

Et enfin, l'exception jeté:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at light.dialog_EV1.getWDurabilityEV(dialog_EV1.java:200) 
    at light.MainGUI.EVButton1ActionPerformed(MainGUI.java:1061) 
    at light.MainGUI.access$100(MainGUI.java:28) 
    at light.MainGUI$2.actionPerformed(MainGUI.java:167) 
    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:6288) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:6053) 
    at java.awt.Container.processEvent(Container.java:2041) 
    at java.awt.Component.dispatchEventImpl(Component.java:4651) 
    at java.awt.Container.dispatchEventImpl(Container.java:2099) 
    at java.awt.Component.dispatchEvent(Component.java:4481) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 
    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:4481) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643) 
    at java.awt.EventQueue.access$000(EventQueue.java:84) 
    at java.awt.EventQueue$1.run(EventQueue.java:602) 
    at java.awt.EventQueue$1.run(EventQueue.java:600) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
    at java.awt.EventQueue$2.run(EventQueue.java:616) 
    at java.awt.EventQueue$2.run(EventQueue.java:614) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:613) 
    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) 
+0

Pouvez-vous poster la ligne 200 du fichier 'dialog_EV1.java'? Parce que c'est le point où le NPE vole. – mtsz

+1

Je vous suggère fortement de compacter votre question - c'est un peu excessif. –

+0

@mtsz: la ligne est: valeur [i] = Integer.parseInt (tbl_Units.getValueAt (i, 6) .toString()); – lopzjk12

Répondre

3

pas grand chose à claire de votre question, ni de code, s'il vous plaît édite toi question r avec SSCCE

1) créer AbstractTableModel publique pour stocker des données,

2) Ajouter TableModel au JTable

3) ajouter ListSelectionMode (SINGLE_SELECTION) à la JTable, avis essai

if(selectedRow > -1)

4) JTable sait suit data types, puis il n'y a aucune raison d'analyser Integer de String e.i.

+0

Salut, merci pour votre réponse, j'ai essayé de condenser ma question autant que possible. En réponse à vos suggestions: 1) Quel est l'avantage de passer à AbstractTableModel? Pourriez-vous clarifier? 2) J'ai déjà ajouté un modèle de table à jTable. 3) Je ne suis pas sûr de savoir comment cela va aider; l'exception est lancée avec les colonnes ... 4) Merci pour les types de données; J'ai défini les types de données dans ma table. – lopzjk12

Questions connexes