初始化对象返回null

时间:2013-07-12 02:50:07

标签: java nullpointerexception

我有一个JComponent,它在类的主体中声明,并在一个名为on 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”的子项,因为setCost()的“cost”为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)
            ));
}

...

singleField(String s) {         //Outputs a JFormattedTextField with an icon at the end
    setOpaque(false);
    image = getImage(s);
}

1 个答案:

答案 0 :(得分:3)

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

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