Java 初始化对象返回空值

Java 初始化对象返回空值,java,nullpointerexception,Java,Nullpointerexception,我有一个JComponent,它在类的主体中声明,并在一个名为construction的方法中初始化,但是当我试图从同一类中的另一个方法访问其初始化方法之外的JComponent时,它返回null。我不确定答案是否在问题的范围内,但我似乎无法解释为什么会发生这种情况 class panelSets { public JPanel sell_buy() { buy = new monetaryField("Buy: ",0); } public JSpl

我有一个JComponent,它在类的主体中声明,并在一个名为construction的方法中初始化,但是当我试图从同一类中的另一个方法访问其初始化方法之外的JComponent时,它返回null。我不确定答案是否在问题的范围内,但我似乎无法解释为什么会发生这种情况

class panelSets {

    public JPanel sell_buy() {
        buy = new monetaryField("Buy: ",0);
    }

    public JSplitPane tax_profit() {         //Called on initialization
        cost = new monetaryField("- Cost: ",1);
    }

    public void setCost() {
        this.cost.copper.setText("33");     //Here is where the error occurs
}

    monetaryField buy;
    monetaryField cost;
}
这只是我的代码的一小段,其中包含了这些实例。如果不在这里,我随时可以发布更多。另外,为了澄清,无法访问“cost”的子级,因为“cost”对于setCost()为null

编辑:为了让每个人的一天变得更糟,“购买”可以从任何地方访问

monetaryField(String s, int i) {
    label = new JLabel(s);
    gold = new singleField("gold.png");
    silver = new singleField("silver.png");
    copper = new singleField("copper.png");
    gold.addKeyListener(keys);
    silver.addKeyListener(keys);
    copper.addKeyListener(keys);

    if(i == 1) {
        gold.setEditable(false);
        silver.setEditable(false);
        copper.setEditable(false);
    }
    GroupLayout layout = new GroupLayout(this);             
    this.setLayout(layout);
    layout.setHorizontalGroup(
               layout.createSequentialGroup()
                  .addComponent(label)
                  .addComponent(gold)
                  .addComponent(silver)
                  .addComponent(copper)
            );
    layout.setVerticalGroup(
       layout.createSequentialGroup()
          .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
               .addComponent(label)
               .addComponent(gold)
               .addComponent(silver)
               .addComponent(copper)
            ));
}


检查
monetaryField
的构造函数,确保
copper
已在其中初始化,此时它显然为
null

this.cost.copper.setText("33");
             ^
    NullPointerException

你确定它不是
coper
这是空的吗?看起来
cost
不是
null
,但是
coper
是上面提到的+1,而且在任何情况下,这似乎是一个简单的调试问题。@Kyle如果
cost
确实是空的,那么你发布的代码就不足以获得任何帮助。您还没有展示如何调用
税收\利润
和修改
成本
。。。。他仍然没有发布与问题相关的代码。投票结束这个问题,因为它变成了一个沮丧的练习,试图说服原始海报显示所需的信息,而他忽略了这个请求。凯尔:你需要更新你的问题。你需要发布问题背后的代码。我们是否知道OP是否获得NPE??据我所知,他没有告诉我们任何不令人困惑的事情。@jahroy你说得对,我不能肯定。但在这样一个简单的声明中(而且信息如此之少),很难想象会有不同的错误,我很抱歉混淆了。它在“这里出错”时抛出nullpointerexception@Kyle yup,这就是我们怀疑的:)去修复
monetaryField
的构造函数,并确保你在那里执行
cuper=new…
。好的,我去看看能找到什么。
this.cost.copper.setText("33");
             ^
    NullPointerException