我试图创建一个简单的JavaFX应用程序,在两个屏幕之间切换,一个可以更改存储的变量,一个只显示,我在main方法中定义了一个函数,只返回nullpointerexception在错误日志中编译项目,它在行上写着
taskList[i].setTaskName(taskNames[i]);
我尝试添加一个if语句,类似于getTechAssigned方法的部分,因为这个变量会不断变化,而taskName变量将保持不变。我只是不确定它为什么会出现,这里是完整的代码:
变量声明
Button assignTask, finalizeTask;
FlowPane pane1, pane2;
Scene scene1, scene2;
Stage theStage;
String[] taskNames = {"Notes", "Paging", "Event Mgmt - Early",
"Event Mgmt -Late", "Airhub 2DA", "Airhub 1DA"
"GSSD", "GSSI", "GSSRR", "Publishing",
"Check Holdovers", "Radio", "PTI Walkoff", "Phones
1300"};
task[] taskList = new task[taskNames.length];
GridPane taskGrid = new GridPane();
导致错误的函数:
public void initializeTasks() {
for (int i = 0; i < taskList.length; i++) {
taskList[i].setTaskName(taskNames[i]);
Text t = new Text(taskList[i].getTaskName());
taskGrid.setRowIndex(t, i);
taskGrid.setColumnIndex(t, 0);
if(taskList[i].getTechAssigned() == null) {
taskList[i].setTechAssigned("Not Assigned");
}
Text r = new Text(taskList[i].getTaskName());
taskGrid.setRowIndex(r, i);
taskGrid.setColumnIndex(r, 1);
}
}
答案 0 :(得分:0)
您创建了阵列,但没有放入任何内容。您的数组包含taskNames.length
个元素,所有元素都为null。
你应该初始化数组的所有元素,如:
taskList[i] = new task();
在您设置taskList[i].setTaskName(taskNames[i]);
答案 1 :(得分:0)
task[] taskList = new task[taskNames.length];
taskList目前有11个null元素,因为你在null时使用setTaskName给出错误。
首先将对象添加到taskList然后使用它。
taskList[i]=new task();
taskList[i].setTaskName(taskNames[i]);