Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JFreeChart从另一个JDialog接收公式生成;AWT-EventQueue-0“;java.lang.NullPointerException_Java_Swing_Nullpointerexception_Jfreechart - Fatal编程技术网

JFreeChart从另一个JDialog接收公式生成;AWT-EventQueue-0“;java.lang.NullPointerException

JFreeChart从另一个JDialog接收公式生成;AWT-EventQueue-0“;java.lang.NullPointerException,java,swing,nullpointerexception,jfreechart,Java,Swing,Nullpointerexception,Jfreechart,问题是,在将整个方程发送到JFreeChart时遇到问题,我试图只发送x^3,x^2的参数。。。等等 尽管如此,我还是得到了一个错误: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at calc.kalkulator.OknoFunkcji.getDane(OknoFunkcji.java:24) at calc.kalkulator.OknoFunkcji.<init>(OknoFunk

问题是,在将整个方程发送到JFreeChart时遇到问题,我试图只发送x^3,x^2的参数。。。等等

尽管如此,我还是得到了一个错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at calc.kalkulator.OknoFunkcji.getDane(OknoFunkcji.java:24)
at calc.kalkulator.OknoFunkcji.<init>(OknoFunkcji.java:37)
at calc.kalkulator.PanelFunkcji.actionPerformed(PanelFunkcji.java:103)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at calc.kalkulator.mainApp.actionPerformed(mainApp.java:299)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
下面是我修改后用于我的应用程序的示例:

 package calc.kalkulator;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.function.Function2D;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;

class OknoFunkcji extends ApplicationFrame {

private static PanelFunkcji panelFunkcji;
private static double a;
private static double b;
private static double c;
private static double d;

public void getDane () {
    a = panelFunkcji.getA();
    b = panelFunkcji.getB();
    c = panelFunkcji.getC();
    d = panelFunkcji.getD();
}


public OknoFunkcji(String title) {
    super(title);
    JPanel chartPanel = createDemoPanel();
    //chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    chartPanel.setSize(500, 270);
    setContentPane(chartPanel);
    getDane();




}

/**
 * Tworzy chart.
 * 
 * @param dataset - zbiór danych.
 * 
 * @return Zwraca instancję charta.
 */
private static JFreeChart createChart(XYDataset dataset) {
    // create the chart...
    JFreeChart chart = ChartFactory.createXYLineChart(
        " ",       // chart title
        "X",                      // x axis label
        "Y",                      // y axis label
        dataset,                  // data
        PlotOrientation.VERTICAL,  
        true,                     // include legend
        true,                     // tooltips
        false                     // urls
    );

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.getDomainAxis().setLowerMargin(0.0);
    plot.getDomainAxis().setUpperMargin(0.0);
    return chart;
}

/**
 * Creates a sample dataset.
 * 
 * @return A sample dataset.
 */
public static XYDataset createDataset() {
    XYDataset result = DatasetUtilities.sampleFunction2D(new X2(), 
            -10.0, 10.0, 40, "f(x)");
    return result;
}

public static JPanel createDemoPanel() {
    JFreeChart chart = createChart(createDataset());
    return new ChartPanel(chart);
}

static class X2 implements Function2D {

    public double getValue(double x) {
        return a*x*x*x + b*x*x + c*x + d;
    }

}



}

出于某种奇怪的原因,无论我做什么,我都会得到NullPointerException

错误在以下代码中:

private static PanelFunkcji panelFunkcji;   //1
private static double a;
private static double b;
private static double c;
private static double d;

public void getDane()
{
    a = panelFunkcji.getA();   //9
    b = panelFunkcji.getB();
    c = panelFunkcji.getC();
    d = panelFunkcji.getD();
}

public OknoFunkcji(String title)
{
    super(title);
    JPanel chartPanel = createDemoPanel();
    //chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    chartPanel.setSize(500, 270);
    setContentPane(chartPanel);
    getDane();    //22
}
在第1行声明变量
panelFunkcji
,并在第9行使用它。但是,您从未实例化该变量。这就是导致
NullPointerException
的原因

要修复它,请添加行

panelFunkcji = new PanelFunkcji(chartPanel);

第22行之前的
OknoFunkcji
构造函数中的任何位置。

哪一行是NullPointerException?感谢您的回答。但是,在这样做之后:
public-OknoFunkcji(字符串标题){super(标题);JPanel-chartPanel=createDemoPanel();panelFunkcji=new-panelFunkcji(chartPanel);chartPanel.setSize(500270);setContentPane(chartPanel);getDane();}
我得到
构造函数面板funkcji(JPanel)未定义的
错误。我该如何解决这个问题?我知道我必须为它制作构造器,但我确实是Java Swing和Java的新手,我非常感谢您的帮助。@Asunez抱歉,这是我没有注意到的错误。应该使用构造函数
PanelFunkcji(JFrame)
。因此,在
panelFunkcji=newpanelfunkcji(chartpanel)行中,不使用
chartpanel
,您应该将
JFrame
对象作为参数。我对秋千了解不多,所以我帮不了你。谢谢!现在它编译时没有任何错误,但是,在将所有a、b、c和d变量打印到控制台后,它们都设置为0。我认真地看了几个小时的代码,几乎熟记在心,但仍然不知道,为什么我不能将这些数据转发到另一个窗口。。。请告诉我你还有其他想法。。。
panelFunkcji = new PanelFunkcji(chartPanel);