简体   繁体   English

引用JTabbedPane的属性时发生NullPointerException

[英]NullPointerException when referencing a property of a JTabbedPane

What is wrong with the logic behind creating a JTabbedPane and getting the tab count of 11, then using a setter? 创建JTabbedPane并获得Tab计数为11,然后使用setter背后的逻辑有什么问题?

I try to reference the tabCount of the SetObjects.currentJTabbedPane and it throws NullPointerException . 我尝试引用SetObjects.currentJTabbedPanetabCount ,它抛出NullPointerException

create 创造

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");
}

output 输出

CLASS
SetObjects: SetObjects:
--> JTabbedPane obj() var: xxxxxxxxx : xxxxxxxx<-- -> JTabbedPane obj()var:xxxxxxxxx:xxxxxxxx <-
: 11: jtpCount of The JTabbedPane created: :11:创建了JTabbedPane的jtpCount:

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

Exception in thread "main" java.lang.NullPointerException 线程“主”中的异常java.lang.NullPointerException
at view.SetObjects.setCurrentJTabbedPane(SetObjects.java:385) 在view.SetObjects.setCurrentJTabbedPane(SetObjects.java:385)
at view.SetObjects.obj(SetObjects.java:217) 在view.SetObjects.obj(SetObjects.java:217)
at view.SchoolJDesktopPane.createInnerFrame(SchoolJDesktopPane.java:119) 在view.SchoolJDesktopPane.createInnerFrame(SchoolJDesktopPane.java:119)
at view.SchoolJDesktopPane.(SchoolJDesktopPane.java:97) 在view.SchoolJDesktopPane。(SchoolJDesktopPane.java:97)
at view.Main.createJDesktopPane(Main.java:60) 在view.Main.createJDesktopPane(Main.java:60)
at view.Main.main(Main.java:54) 在view.Main.main(Main.java:54)

Are you passing null to setCurrentJTabbedPane ? 您将null传递给setCurrentJTabbedPane吗? Try adding more System.out.println statements to inspect each variable that might be the problem. 尝试添加更多System.out.println语句以检查可能是问题的每个变量。 Also, make your debugging statements simpler, ie replace System.out.println(A + B + C) with three different statements. 另外,使调试语句更简单,即用三个不同的语句替换System.out.println(A + B + C)

EDIT: The reason for splitting up debug statements is that if System.out.println(object1.foo() + ", " + object2.bar()) throws a NullPointerException then you don't know which object was null. 编辑:拆分调试语句的原因是,如果System.out.println(object1.foo() + ", " + object2.bar())抛出NullPointerException,则您不知道哪个对象为null。 Splitting it into two statements means the stack trace tells you exactly where the problem was. 将其拆分为两个语句意味着堆栈跟踪会准确告诉您问题出在哪里。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM