NullPointerException. Как корректно разделить код на отдельные файлы?

Есть код, который находится в одном Java файле. Если вкратце эта программа с JTable в которую, вводят точки, а она по этим точкам рисует наиболее похожий график.

 package TextEditor.graphicsModul;
 import javax.swing.*;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableRowSorter;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.geom.*;


import javafx.embed.swing.JFXPanel;

import java.util.*;



public class GUI extends JPanel {

private JPanel graphicsPanel;
private GraphicsArea graphicsArea;

private JButton runBut;



private JPanel leftPanel;
private JToolBar toolBar;

private DefaultTableModel dataTableModel;
private JTable dataTable;

private Double valueOfX, valueOfY;

private ArrayList<Ellipse2D.Double> pointList = new ArrayList<>();


public void addDataInTable(){
    DefaultTableModel model = (DefaultTableModel)dataTable.getModel();
    model.addRow(new Vector<>());
    }


public void deleteDataFromTableRow (){
    DefaultTableModel model = (DefaultTableModel)dataTable.getModel();;
    model.removeRow(dataTable.getRowCount()-1);

}

public void clearDataTable(){
    DefaultTableModel model = (DefaultTableModel)dataTable.getModel();
    model.setRowCount(0);
}

public ArrayList<Ellipse2D.Double> getPointList(){
    return pointList;
}

private abstract class  calculationAbstract {

    protected double deltaX = getMaxX0() - getMinX0();
    protected double deltaY = getMaxY0() - getMinY0();

    public abstract double getNewX();

    public abstract double getNewY();

    public abstract double getTransformedA();

    public abstract double getTransformedB();

    public abstract ArrayList<Double> getApproximationY();


    public Ellipse2D.Double CurrentPoint;

    public ArrayList<Double> calculateCommonPart() {
        ArrayList<Ellipse2D.Double> transformedData = new ArrayList<>();
        ArrayList<Double> result = new ArrayList<>();

        for (int i = 0; i < pointList.size(); i++) {
            transformedData.add(pointList.get(i));
        }

        // считаем коэффициенты a и b
        double averageProductXY = 0;
        double averageX = 0;
        double averageY = 0;
        double averageSqrX = 0;
        int n = pointList.size();

        double newX = 0;
        double newY = 0;


        for (int i = 0; i < n; i++) {
            CurrentPoint = pointList.get(i);
            newX = getNewX();
            newY = getNewY();

            averageX += newX;
            averageY += newY;
            averageSqrX += Math.pow(newX, 2);
            averageProductXY += newX * newY;

        }
        averageProductXY /= n;
        averageX /= n;
        averageY /= n;
        averageSqrX /= n;

        double sqrDispX = 0d;
        sqrDispX = averageSqrX - Math.pow(averageX, 2);
        double a = (averageSqrX * averageY - averageX * averageProductXY) / sqrDispX;
        double b = 0d;
        b = (averageProductXY - averageX * averageY) / (sqrDispX);

        result.add(a);
        result.add(b);
        return result;
    }

    public double factorial(double n) {
        double tmp1 = Math.sqrt(2 * Math.PI * n);
        double tmp2 = Math.pow(n / Math.E, n);
        double tmp3 = Math.exp(1.0 / (12 * n - 1.0 / (20 * n)));//(Math.sqrt(52*Math.E)*n);

        return tmp1 * tmp2 * tmp3;
    }

    public double sinMaclaren(double x) {
        double sinmac = 0;
        double xRad = Math.toRadians(x);
        for (int i = 1; i < 50; i++) {

            double a = 2 * i - 1;
            double tmp1 = Math.pow((-1.0d), (i + 1));
            double tmp2 = Math.pow(xRad, a);
            double tmp3 = factorial(a);
            sinmac += tmp1 * (tmp2 / tmp3);
        }

        return sinmac;
    }


    public double getSKO() {
        double SKO = 0;
        for (int i = 0; i < pointList.size(); i++) {
            CurrentPoint = pointList.get(i);
            double newX = getNewX();
            double newY = getNewY();

            SKO += Math.pow((newX * calculateCommonPart().get(1) + calculateCommonPart().get(0) - newY), 2);
        }
        return SKO;
    }

    public abstract String getFormula();

    public double getMaxX0() {
        double maxX0 = pointList.get(0).getX();
        for (int i = 1; i < pointList.size(); i++) {
            if (pointList.get(i).getX() > maxX0) {
                maxX0 = pointList.get(i).getX();
            }
        }
        return maxX0;
    }

    public double getMinX0() {
        double minX0 = pointList.get(0).getX();
        for (int i = 1; i < pointList.size(); i++) {
            if (pointList.get(i).getX() < minX0) {
                minX0 = pointList.get(i).getX();
            }
        }
        return minX0;
    }

    public double getMinY0() {
        double minY0 = pointList.get(0).getY();
        for (int i = 1; i < pointList.size(); i++) {
            if (pointList.get(i).getY() < minY0) {
                minY0 = pointList.get(i).getY();
            }
        }
        return minY0;
    }

    public double getMaxY0() {
        double maxY0 = pointList.get(0).getY();
        for (int i = 1; i < pointList.size(); i++) {
            if (pointList.get(i).getY() > maxY0) {
                maxY0 = pointList.get(i).getY();
            }
        }
        return maxY0;
    }

}


    private class  straighCalculate extends  calculationAbstract{

    // y = b*x+a
    public double getNewX(){
        return CurrentPoint.getX();
    }
    public double getNewY(){
        return CurrentPoint.getY();
    }
    public double getTransformedA(){
        return this.calculateCommonPart().get(0);
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){
        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
            //double Y = getTransformedB()* pointList.get(i).getX() + getTransformedA();
            double Y = getTransformedB()* i + getTransformedA();
            YList.add(Y);
        }

        return YList;
    }
    public String getFormula (){
        return "Y = " + getTransformedB() + "* x + " + getTransformedA();
    }
}



private  class exponentialCalculate extends calculationAbstract{
    // y = a*x^b
    public double getNewX(){
        return Math.log(CurrentPoint.getX());
    }
    public double getNewY(){
        return Math.log(CurrentPoint.getY());
    }

    public double getTransformedA(){
        return Math.exp(this.calculateCommonPart().get(0));
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){

        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
            //double Y = getTransformedA()* Math.pow(pointList.get(i).getX(), getTransformedB());
            double Y = getTransformedA()* Math.pow(i, getTransformedB());
            YList.add(Y);
        }

        return YList;
    }

    public String getFormula (){
        return "Y = " + getTransformedA() + "* x ^ " + getTransformedB();
    }

}

private class logCalculate  extends calculationAbstract{
    // y = b*ln(x)+a
    public double getNewX(){
        return Math.log(CurrentPoint.getX());
    }
    public double getNewY(){
        return CurrentPoint.getY();
    }

    public double getTransformedA(){
        return this.calculateCommonPart().get(0);
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList <Double> getApproximationY(){

            ArrayList <Double> YList = new ArrayList<>();
            for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
                //double Y = getTransformedB()* Math.log(pointList.get(i).getX()) + getTransformedA();
                double Y = getTransformedB()* Math.log(i) + getTransformedA();
                YList.add(Y);
            }
            return YList;
    }
    public String getFormula (){
        return "Y = " + getTransformedB() + "* Ln(x) + " + getTransformedA();
    }

}

private class expCalculate  extends calculationAbstract{
    // y = exp (b*x+a)
    public double getNewX(){
        return CurrentPoint.getX();
    }
    public double getNewY(){
        return Math.log(CurrentPoint.getY());
    }
    public double getTransformedA(){
        return this.calculateCommonPart().get(0);
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){


        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMaxX0(); i<getMaxX0(); i+=deltaX*0.01){
            //double Y = Math.exp(getTransformedB()* pointList.get(i).getX() + getTransformedA());
            double Y = Math.exp(getTransformedB()*i + getTransformedA());
            YList.add(Y);
        }
        return YList;
    }
    public String getFormula (){
        return "Y = e^" + getTransformedB() + "*x +" + getTransformedA();
    }
}

private class aExpCalculate  extends calculationAbstract{
    // y = a*exp (b*x)
    public double getNewX(){
        return CurrentPoint.getX();
    }
    public double getNewY(){
        return Math.log(CurrentPoint.getY());
    }
    public double getTransformedA(){
        return Math.exp(this.calculateCommonPart().get(0));
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){


        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
            double Y = getTransformedA()* Math.exp(i * getTransformedB());
            YList.add(Y);
        }
        return YList;

    }
    public String getFormula (){
        return "Y = " + getTransformedA() + "e^(x*" + getTransformedB() + ")";
    }
}

private class gipCalculate  extends calculationAbstract{
    // y = (b/x)+a
    public double getNewX(){
        return 1.0d/CurrentPoint.getX();
    }
    public double getNewY(){
        return CurrentPoint.getY();
    }

    public double getTransformedA(){
        return this.calculateCommonPart().get(0);
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){

        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
            double Y = getTransformedB() / i + getTransformedA();
            YList.add(Y);
        }
        return YList;
    }
    public String getFormula (){
        return "Y = " + getTransformedB() + "/ x + " + getTransformedA();
    }

}

private class gip1Calculate  extends calculationAbstract{
    // y = 1/(bx+a)
    public double getNewX(){
        return CurrentPoint.getX();
    }
    public double getNewY(){
        return 1.0d/CurrentPoint.getY();
    }
    public double getTransformedA(){
        return this.calculateCommonPart().get(0);
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){


        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
            double Y = 1.0 / (getTransformedB()* i + getTransformedA());
            YList.add(Y);
        }
        return YList;

    }
    public String getFormula (){
        return "Y = 1 /(" + getTransformedB() + "* x +" + getTransformedA() +")";
    }
}

private class gip2Calculate  extends calculationAbstract{
    // y = x/(ax+b)
    public double getNewX(){
        return 1.0d/CurrentPoint.getX();
    }
    public double getNewY(){
        return 1.0d/CurrentPoint.getY();
    }
    public double getTransformedA(){
        return this.calculateCommonPart().get(0);
    }

    public double getTransformedB(){
        return this.calculateCommonPart().get(1);
    }
    public ArrayList<Double> getApproximationY(){

        ArrayList <Double> YList = new ArrayList<>();
        for (double i = getMinX0(); i<getMaxX0(); i+=deltaX*0.01){
            double Y =i/(getTransformedA()* i + getTransformedB());;
            YList.add(Y);
        }
        return YList;
    }
    public String getFormula (){
        return "Y = x / (" + getTransformedA() + "* x + " + getTransformedB() +")";
    }
}




private class RunBtnAction extends AbstractAction{

    public RunBtnAction(){
        super( "Аппроксимировать" );
    }

    @Override
    public void actionPerformed( ActionEvent e ){
        DefaultTableModel model = (DefaultTableModel) dataTable.getModel();

        for(int i =0; i<model.getRowCount(); i++ ) {
            valueOfX = Double.parseDouble(model.getValueAt(i, 0).toString());
            //valueOfX = valueOfX*(graphicsArea.getWidth()/gridSlider.getValue());
            valueOfY = Double.parseDouble(model.getValueAt(i, 1).toString());

            //valueOfY = valueOfY*(graphicsArea.getHeight()/gridSlider.getValue());
            if (graphicsArea.isVisible()) {pointList.clear();}

            pointList.add(new Ellipse2D.Double(valueOfX, valueOfY, 5, 5));
        }






        graphicsArea.setVisible(!graphicsArea.isVisible());
        //graphicsScroll.setVisible( !graphicsScroll.isVisible());
        graphicsArea.paint(GUI.this.getGraphics());
        //graphicsArea.setVisible(!graphicsArea.isVisible());
        SwingUtilities.updateComponentTreeUI(GUI.this);



    }

}

public GUI(){
    runBut = new JButton( new RunBtnAction() );
    toolBar = new JToolBar();
    toolBar.add(runBut);
    toolBar.addSeparator();



    toolBar.setFloatable(false);
    Dimension dimLeftPanel = new Dimension(300,300);
    JPanel menuPanel = new JPanel();
    menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.Y_AXIS));

    leftPanel = new JPanel();
    leftPanel.setLayout(new BorderLayout());

    menuPanel.setMinimumSize(dimLeftPanel);
    menuPanel.setMaximumSize(dimLeftPanel);
    menuPanel.setPreferredSize(dimLeftPanel);


    dataTableModel =  new DefaultTableModel();
    dataTableModel.addColumn("X");
    dataTableModel.addColumn("Y");
    dataTable = new JTable(dataTableModel);
    dataTable.setPreferredSize(new Dimension(300, 300));
    JScrollPane tableScroll = new JScrollPane(dataTable);

    DefaultTableModel model = (DefaultTableModel) dataTable.getModel();

    RowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(model);
    ((TableRowSorter<DefaultTableModel>) sorter).setSortable(1, false);
    dataTable.setRowSorter(sorter);


    leftPanel.add(tableScroll);
    JPanel tableButtonPanel = new JPanel();
    JButton addDataButton = new JButton("Добавить точку");
    JButton deleteDataButton = new JButton("Удалить точку");
    JButton clearDataButton = new JButton("Очистить таблицу");
    addDataButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            addDataInTable();
              }
    });
    tableButtonPanel.add(addDataButton);
    deleteDataButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            deleteDataFromTableRow();
        }
    });
    tableButtonPanel.add(deleteDataButton);
    clearDataButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            clearDataTable();
        }
    });
    tableButtonPanel.add(clearDataButton);



    leftPanel.setMinimumSize( dimLeftPanel);
    leftPanel.setMaximumSize( dimLeftPanel);
    leftPanel.setPreferredSize( dimLeftPanel );
    menuPanel.add(toolBar, BorderLayout.SOUTH);
    menuPanel.add(leftPanel);
    menuPanel.add(tableButtonPanel);



    graphicsArea = new GraphicsArea();
    graphicsArea.setVisible( false );

    graphicsPanel = new JPanel(new BorderLayout());
    graphicsPanel.setMinimumSize(new Dimension(600,600));
    graphicsPanel.add(graphicsArea);

    setLayout( new BorderLayout() );
    add( menuPanel,BorderLayout.WEST );
    /*
    graphicsScroll = new JScrollPane();
    graphicsScroll.add(graphicsPanel);
    graphicsScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    graphicsScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    graphicsScroll.setVisible(false);
    graphicsScroll.setPreferredSize(new Dimension(600,600));
    */
    add(graphicsPanel);


}

private class GraphicsArea extends JPanel{


    private float xn = 10f;
    private float yn = 10f;
    private double graphicsAreaWidth=0;
    private double graphicsAreaHeight=0;

     double gridCellNumberY =0;
     double gridCellNumberX =0;
    private Line2D.Double horizontalAxis;
    private Line2D.Double verticalAxis;

    public void paint(Graphics g) {

        BasicStroke normalStroke = new BasicStroke(1);
        BasicStroke boldStroke = new BasicStroke(3);

        graphicsAreaHeight = getHeight() - 2*yn;
        graphicsAreaWidth = getWidth() - 2*xn;

        ArrayList <Double> SKOs = new ArrayList<>();
        ArrayList<calculationAbstract> classList = new ArrayList<>();

        straighCalculate straighCalculate = new straighCalculate();
        classList.add(straighCalculate);
        SKOs.add(straighCalculate.getSKO());

        logCalculate logCalculate = new logCalculate();
        classList.add(logCalculate);
        SKOs.add(logCalculate.getSKO());

        exponentialCalculate exponentialCalculate = new exponentialCalculate();
        classList.add(exponentialCalculate);
        SKOs.add(exponentialCalculate.getSKO());

        expCalculate expCalculate = new expCalculate();
        classList.add(expCalculate);
        SKOs.add(expCalculate.getSKO());

        aExpCalculate aExpCalculate = new aExpCalculate();
        classList.add(aExpCalculate);
        SKOs.add(aExpCalculate.getSKO());

        gipCalculate gipCalculate = new gipCalculate();
        classList.add(gipCalculate);
        SKOs.add(gipCalculate.getSKO());

        gip1Calculate gip1Calculate = new gip1Calculate();
        classList.add(gip1Calculate);
        SKOs.add(gip1Calculate.getSKO());

        gip1Calculate gip2Calculate = new gip1Calculate();
        SKOs.add(gip2Calculate.getSKO());
        classList.add(gip2Calculate);

        double minValue = straighCalculate.getSKO();
        calculationAbstract calc = new straighCalculate();

        for (int i =1; i < SKOs.size(); i++){
            if(SKOs.get(i)< minValue) {
                minValue = SKOs.get(i);
            }
        }





        Rectangle2D graphicAreaRect = new Rectangle2D.Double(getX() + xn, getY() + yn, getWidth() - 2 * xn, getHeight() - 2 * yn);

        double scale = 0d;
        if(calc.getMaxX0()<= calc.getMaxY0()) {
            scale = Math.round(calc.getMaxY0() - Double.parseDouble(dataTable.getValueAt(dataTable.getRowCount() - 2, 1).toString()));
        }
        if(calc.getMaxX0()>= calc.getMaxY0()) {
            scale = Math.round(calc.getMaxX0() - Double.parseDouble(dataTable.getValueAt(dataTable.getRowCount() - 2, 0).toString()));
        }
          gridCellNumberX = Math.round(scale*dataTable.getRowCount())+1.0d;
           gridCellNumberY = Math.round(scale*dataTable.getRowCount())+1.0d;

           if (gridCellNumberX >=100 || gridCellNumberY >=100){
               gridCellNumberX = Math.round(gridCellNumberX/10)+1;
               gridCellNumberY = Math.round(gridCellNumberY/10)+1;
           }
       //} else if (dataTable.getRowCount() < 10){
           //gridCellNumberX =15;
           //gridCellNumberY = 15;
       //}
       //else if (dataTable.getRowCount() > 10){
         //  gridCellNumberX = dataTable.getRowCount() +dataTable.getRowCount()%10;
           //gridCellNumberY = dataTable.getRowCount()+dataTable.getRowCount()%10;
       //}


        double cellWidth = graphicsAreaWidth/gridCellNumberX;
        double cellHeight = graphicsAreaHeight/gridCellNumberY;

        Graphics2D painter = (Graphics2D) g;
        AffineTransform defaultTransform = painter.getTransform();

        painter.setColor(Color.BLACK);
        painter.draw(graphicAreaRect);

        painter.setPaint(new GradientPaint(xn, yn, Color.WHITE, 400, 400, Color.WHITE));
        painter.fill(new Rectangle2D.Double(graphicAreaRect.getX() + 1, graphicAreaRect.getY() + 1, graphicAreaRect.getWidth() - 1, graphicAreaRect.getHeight() - 1));

        painter.setColor(Color.BLACK);
        painter.setStroke(boldStroke);




        painter.setColor(Color.GREEN);
        painter.setStroke(boldStroke);


        int index =0;
        for (int i =0; i< classList.size(); i++){
            if (classList.get(i).getSKO() == minValue){
                index = i;
            }
        }
        calc = classList.get(index);
        ArrayList <Double> YList = calc.getApproximationY();

      /*
        if (calc.deltaX < 0f && Math.round(calc.getMaxX0() * calc.deltaX) != 0) {
            gridCellNumberX =  Math.round(calc.getMaxX0() * calc.deltaX) + 1;
        } else {
            gridCellNumberX = Math.round(calc.getMaxX0() / calc.deltaX);
        };


        if (calc.deltaY < 0f && Math.round(calc.getMaxY0() * calc.deltaY) != 0) {
            gridCellNumberY =  Math.round(calc.getMaxY0() * calc.deltaY) + 1f;
        } else {
            gridCellNumberY = Math.round(calc.getMaxY0() / calc.deltaY)+1f;
        };
        */

        painter.setColor(Color.LIGHT_GRAY);
        painter.setStroke(normalStroke);

        for (int j = 1; j < gridCellNumberY; j++) {
            Line2D.Double verticalLine = new Line2D.Double(cellWidth*j+xn, yn, cellWidth*j+xn, yn + graphicsAreaHeight);
            painter.draw(verticalLine);
        }
        for (double j = 1; j< gridCellNumberX; j++){
            Line2D horizontalLine = new Line2D.Double(xn, cellHeight* j + yn, graphicsAreaWidth + xn, cellHeight * j + yn);
            painter.draw(horizontalLine);
        }

        painter.setColor(Color.BLACK);

            verticalAxis = new Line2D.Double(xn, yn, xn, yn + graphicsAreaHeight);
            painter.draw(verticalAxis);
            horizontalAxis = new Line2D.Double(xn, cellHeight * (gridCellNumberY / 2) + yn, graphicsAreaWidth + xn, cellHeight * (gridCellNumberY / 2) + yn);
            painter.draw(horizontalAxis);


        painter.drawString(classList.get(index).getFormula(), 120,25);

        Path2D path2D = new Path2D.Double();

        painter.translate((verticalAxis.getX1()),(horizontalAxis.getY2()));
        painter.rotate(Math.toRadians(180));
        path2D.moveTo(0,0);


        double minX = pointList.get(0).getX();
        double maxX = pointList.get(0).getX();
        for(int i = 1; i < pointList.size(); i++){
            if (pointList.get(i).getX()< minX){
                minX = pointList.get(i).getX();
            }
            if (pointList.get(i).getX() > maxX){
                maxX = pointList.get(i).getX();
            }
        }

        ArrayList<Double> XList = new ArrayList<>();
        for (double x =minX; x < maxX; x+=(maxX-minX)*0.01) {


            //painter.draw(pointList.get(i));
            XList.add(x);
        }


        painter.setColor(Color.GREEN);
        for (int i =0; i< XList.size(); i++){
            path2D.lineTo(-XList.get(i), YList.get(i));
            painter.draw(path2D);
        }
        painter.setColor(Color.RED);
        for (int i =0 ; i< pointList.size(); i++) {
            painter.fill(new Ellipse2D.Double(- pointList.get(i).getX(), pointList.get(i).getY(),5,5));
        }

        painter.setTransform(defaultTransform);



        /*
        Formatter formatterX = new Formatter();
        Formatter formatterY = new Formatter();

        painter.setColor(Color.BLACK);
        painter.setFont(new Font("Times New Roman", 1,9));

        for (int i = 1; i < gridCellNumber; i++) {
            double gridSubdivision = minX+ gridCellNumber/i*calc.deltaX;
            painter.draw(new Line2D.Double(xn - 2.5, graphicAreaRect.getHeight()/gridCellNumber*i+yn, 2.5 + xn, graphicAreaRect.getHeight()/gridCellNumber*i+yn));
            formatterY = new Formatter();
            formatterY.format("%4.1f", gridSubdivision);
            painter.drawString("" + formatterY, (float) graphicsArea.getX(), (float) graphicsArea.getHeight()/gridCellNumber*i);
        }
        formatterY.close();

        painter.setFont(new Font("Yimes New Roman", Font.BOLD, 9));

        for (int j =1; j < gridCellNumber; j++){
            double gridSubdivision = j;
            formatterX.format("%4.1f", gridSubdivision);
            painter.draw(new Line2D.Double( graphicAreaRect.getWidth()/gridCellNumber*j+xn, horizontalAxis.getY1(), (double) graphicAreaRect.getWidth()/gridCellNumber*j+xn, horizontalAxis.getY1() + yn));;
            painter.drawString("" + formatterX,  (float) graphicsAreaWidth/gridCellNumber*j+xn, (float) horizontalAxis.getY2() + 20);
        }
        formatterX.close();
        */


    }


    }

}

Тут все вспомогательные классы приватные. Этот код работает. Теперь я хочу разделить классы по отдельным файлам и сделать их public для этого в общий абстрактный класс я добавил метод

   public void setData (DefaultTableModel model) {
    this.model = model;
   // в этой строке NullPointerException
    for (int i = 0; i< this.model.getRowCount(); i++){
        this.pointList.add(new Ellipse2D.Double(Double.parseDouble(this.model.getValueAt(i,0).toString()), Double.parseDouble(this.model.getValueAt(i,1).toString()),5,5));
    }
} 

Этот метод должен копировать модель таблицы и заполнять pointList, но он выдает NullPointerException. Помогите исправить. Напишите комментарии, если нужно, добавлю полный код разделенной программы.


Ответы (0 шт):