java - 从另一个 Java 类调用方法时出现问题

标签 java

我遇到运行时错误,指出线程“AWT-EventQueue-0”java.lang.NullPointerException 中出现异常 在 Status.copyState(Status.java:29) 这是一个调用 Status 调用 (st) 实例的类:主类是:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
 *
 * 
 * @author (Jason Sizemore) 
 * @version (11-20-09 HW09)
 */
public class BetterCalculator extends Calculator 
{   
    //attributes
    private JButton undo; 
    private String undoText;
    private Status st;

    public BetterCalculator()
    {
        super();
        st = new Status();

    }
    public void createUserInterface3()
    {
        createUserInterface2();
        undo = new JButton("undo");
        jPanel.add(undo);
        undo.setBackground(Color.red);
       undo.setToolTipText("This is the undo feature");
       undo.addActionListener(this);

    }
     public void actionPerformed(ActionEvent e)
     {
     super.actionPerformed(e);
     while(displayBox.getText() != null)
     {
         st.copyState();

        }
     if(e.getSource() == undo)
      {

        Status st;
        st = new Status();
       undoText = st.returnState();
        displayBox.setText(undoText);


      }

    }
    public static void main(String[] args)
    {

        BetterCalculator myCalc;
        myCalc = new BetterCalculator();
        myCalc.createUserInterface3();
    }
}

它被称为 Status (st) 的实例,这是 Status 类

import java.util.*;
import java.awt.event.*;
import java.awt.*;
/**
 * Write a description of class Status here.
 * 
 * @author (Jason Sizemore ) 
 * @version (HW09 11-21-09)
 *  This is a class to get the status for the undo feature
 */
public class Status extends BasicCalculator
{   
    //attributes
   private ArrayList<String> lastState;
   public String ls;

   public String rls;  
    //constructors

    public Status()
    {
       lastState = new ArrayList<String>(10);

    }

    //Methods
    public void copyState()
    {
         //operand1 = Double.parseDouble(displayBox.getText());
          ls = displayBox.getText();
        lastState.add(ls);

    }
    public String returnState()
    {
       int sizeOfArrayList; 
       sizeOfArrayList = lastState.size();
        rls = lastState.get(sizeOfArrayList);
        return rls;

    }
}

我知道问题出在 ls = displayBox.getText(); 行上我有一个对象接受对象方法的返回。我在这里缺少什么。

感谢您的帮助。

最佳答案

我的猜测是,在调用 copyState 时,displayBox 尚未设置为任何内容。 displayBox 是在哪里声明的?

关于java - 从另一个 Java 类调用方法时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784635/

相关文章:

java - 如何打开与应用程序的.jar文件位于同一目录中的文件?

java - 可扩展 ListView setOnChildClickListener 的问题

Java,创建可重用线程不安全对象的缓存

Java OpenGL 相机

java - 删除行后刷新数据表

Java String、indexof 和 substring 来获取解析的日期

java - 汉诺塔递归算法

java - 比较 BigDecimal 是否大于零

java - Java 在文件中间写入的最佳方式

java - 我无法导入 Maven 项目选项