这段代码(都在一个类中)的工作原理是:
package tester;
import java.util.ArrayList;
import processing.core.*;
public class GraphicsMain extends PApplet{
int screenWidth = 800;
int screenHeight = 500;
String filepath = "/a/filepath/here/";
ArrayList<PGraphics> motifArray = new ArrayList<PGraphics>();
int stageWidth = 100; // eventually make this based on the motif's max width
int stageHeight = 400; // make this based on the motif's max height
PImage pic = loadImage(filepath + "small_jones6.png");
PImage pic2 = loadImage(filepath + "small_dresser10.png");
public void setup() {
size(screenWidth,screenHeight,P3D);
background(255);
for (int i = 0; i < 2; i++) {
motifArray.add(createGraphics(stageWidth,stageHeight,P3D));
motifArray.get(i).beginDraw();
motifArray.get(i).image(pic,10,10,100,90);
motifArray.get(i).image(pic2,10,50,50,50);
motifArray.get(i).endDraw();
}
if (motifArray.get(0) == null) {
System.out.println("The motif array is unfilled!");
}
}
public void draw() {
for (int i = 0; i < motifArray.size(); i ++) {
image(motifArray.get(i),200+(400*i),100);
}
}
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "GraphicsMain" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
}
下面的代码(重构为两个单独的类)不是:
**我注意到空指针异常中标识的两行[每个类中一行]
package tester;
import java.util.ArrayList;
import processing.core.*;
public class GraphicsMain extends PApplet{
int screenWidth = 800;
int screenHeight = 500;
PGraphicsMaker pgm = new PGraphicsMaker(this);
ArrayList<PGraphics> motifArray;
public void setup() {
size(screenWidth,screenHeight,P3D);
background(255);
motifArray = pgm.makeMotifArray(); // ** NULL POINTER EXCEPTION HERE **
if (motifArray.get(0) == null) {
System.out.println("The motif array is unfilled!");
}
}
public void draw() {
for (int i = 0; i < motifArray.size(); i ++) {
image(motifArray.get(i),200+(400*i),100);
}
}
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "GraphicsMain" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
}
package tester;
import java.util.ArrayList;
import processing.core.PApplet;
import processing.core.PGraphics;
import processing.core.PImage;
import processing.core.*;
public class PGraphicsMaker {
String filepath = "/a/filepath/here/";
PApplet parent;
int stageWidth = 100; // eventually make this based on the motif's max width
int stageHeight = 400; // make this based on the motif's max height
ArrayList<PGraphics> motifArray;
PImage pic;
PImage pic2;
public PGraphicsMaker(PApplet pa) {
PApplet parent = pa;
pic = parent.loadImage(filepath + "small_jones6.png");
pic2 = parent.loadImage(filepath + "small_dresser10.png");
}
public ArrayList makeMotifArray() {
ArrayList<PGraphics> motifArray = new ArrayList<PGraphics>();
for (int i = 0; i < 2; i++) {
// ** NULL POINTER EXCEPTION on the line below **
motifArray.add(parent.createGraphics(stageWidth,stageHeight,parent.P3D));
motifArray.get(i).beginDraw();
motifArray.get(i).image(pic,10,10,100,90);
motifArray.get(i).image(pic2,10,50,50,50);
motifArray.get(i).endDraw();
}
return motifArray;
}
}
在pgraphicsmaker
的构造函数中,声明局部变量parent
并为其分配pa
。
PApplet parent = pa;
...当我确定您打算将它分配给实例变量parent
:
parent = pa;
在您的代码中,实例变量parent
保持null
,直到它被访问,并且结果为nullpointerexception
。
我打算从一个Java项目中提取几个类和包,并将它们放入另一个项目中(该项目将有一个可分发的jar)。这并不太难,但当然,进行如此大规模的重构会带来一些后果。也就是说,在原始项目中有许多类是我想要提取的类的子类。实现这种重构的最佳方法是什么?
我有4个图像作为按钮,当选择正确的按钮时,会出现一个工作正常的箭头按钮。 我的问题是,我试图更改每个按钮的后台资源以在单击此箭头时进行更改,但我在该行得到一个空指针异常: 我已经在java onCreate中声明了nextArrow按钮- 类别: 日志: XML: 我错过了什么明显的东西吗?
以下是在sun.reflect.nativeMethodAccessorImpl.Invoke0(本机方法)在sun.reflect.nativeMethodAccessorImpl.Invoke(未知源)在sun.reflect.NativeMethodAccessorImpl.Invoke(未知源)在java.lang.Reflect.Method.Invoke(未知源)在com.codena
创建新的Arraylist(如第一种方法)与创建第二种方法之间的区别是什么?在创建一个时,您考虑了什么?
我正在写一个任务,将文件从一个公共文件夹中的特定位置解压,如下所示 现在,当我执行任务时,它会给我NullPointerException,而没有其他细节。我不知道还需要什么。 这是我在stackTrace中得到的信息: 原因:java。org上的lang.NullPointerException。格雷德尔。应用程序编程接口。内部的文件IdentityFileResolver。doResolve(
我试图展示一个祝酒词,当我的API请求不工作,由于没有互联网连接。首先,我尝试在try块失败时显示一个Toast,然后在catch块中显示这个Toast。我尝试了developer.android.com的方法,但我甚至无法启动应用程序。 我在catch-block中的代码是这样的: 我似乎对方法有问题,因为它突出显示为红色。这似乎是一个问题,因为我在一个片段内部使用这个。我在使用时读到了一些内容