JFreeChart从另一个JDialog接收公式生成;AWT-EventQueue-0“;java.lang.NullPointerException
问题是,在将整个方程发送到JFreeChart时遇到问题,我试图只发送x^3,x^2的参数。。。等等 尽管如此,我还是得到了一个错误: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
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);