2010-10-29 4 views
0

Quel est le problème avec la logique derrière la création d'un JTabbedPane et l'obtention de l'onglet compte de 11, puis en utilisant un setter?NullPointerException lors de la référence à une propriété d'un JTabbedPane

J'essaie de faire référence à la tabCount du SetObjects.currentJTabbedPane et lancers francs NullPointerException.

créer

jtp.setSelectedIndex(0); 

int jtpCount=jtp.getTabCount(); 
System.out.println(C+M+AND+jtpCount+": jtpCount of The JTabbedPane created: \n"); 

setCurrentJTabbedPane(jtp); 
int currentCount=SetObjects.currentJTabbedPane.getTabCount(); 
System.out.println(C+M+AND+currentCount+": currentCount for 
    SetObjects.currentJTabbedPane.getTabCount() : \n"); 

setter

public static void setCurrentJTabbedPane(JTabbedPane currentJTabbedPane) { 
    String M =(" --> in setCurrentJTabbedPane() var: <-- \n"); 
    System.out.println(M); 

    SetObjects.currentJTabbedPane = currentJTabbedPane; 
    System.out.println(C+M+AND+SetObjects.currentJTabbedPane.getTabCount()+": 
     SetObjects.currentJTabbedPane.getTabCount() : \n"); 
} 

sortie

CLASSE
Seto bjects:
-> JTabbedPane obj() var: xxxxxxxxx: xxxxxxxx <-
: 11: jtpCount de la JTabbedPane créé:

--> in setCurrentJTabbedPane() var: <-- 

Exception in thread "main" java.lang.NullPointerException
à view.SetObjects.setCurrentJTabbedPane (SetObjects.java:385)
à view.SetObjects.obj (SetObjects.java:217)
à view.SchoolJDesktopPane.createInnerFrame (SchoolJDesktopPane.java:119)
à view.SchoolJDesktopPane. (SchoolJDesktopPane.java:97)
à view.Main.createJDesktopPane (Main.java:60)
à view.Main.main (Main.java:54)

+0

Où initialisez-vous 'currentJTabbedPane' dans ** create **? – Ishtar

+0

Je vois que vous avez mis à jour votre message et que vous passez maintenant 'jtp' à setCurrentJTabbedPane. Avez-vous simplement résolu votre problème? –

Répondre

1

Vous êtes de passage à nullsetCurrentJTabbedPane? Essayez d'ajouter d'autres instructions System.out.println pour inspecter chaque variable pouvant poser problème. En outre, simplifiez vos instructions de débogage, c'est-à-dire remplacez System.out.println(A + B + C) par trois instructions différentes.

EDIT: La raison de la division des instructions de débogage est que si System.out.println(object1.foo() + ", " + object2.bar()) lève une exception NullPointerException, vous ne savez pas quel objet était null. Le découper en deux instructions signifie que la trace de la pile vous indique exactement où se trouvait le problème.

+0

Désolé jtp est le JTabbedPane créé. – ceyesumma

Questions connexes