Пока мы ждем от вас сообщения о фактических ошибках, которые вы получаете (a) , пожалуйста, уделите время НИКОГДА , сделайте следующее:
if (delTask.isEnabled() == false)
Намного удобнее читать:
if (! delTask.isEnabled())
Теперь мы вернемся к вашему запланированному программированию в ожидании вашего обновления.
Dum de dum de dum ...
Теперь, основываясь на вашем обновлении, следующая часть стекапакета:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at projecttaskmanagement.ProjectGUI.delTask_mouseClicked(ProjectGUI.java:233)
указывает, в чем заключается проблема.Узнайте, какая из этих строк в строке № 233, и вот она у вас.То, что вы пытаетесь отнести к этой строке, на самом деле является пустой ссылкой.
Исходя из фрагмента, это, вероятно, будет одна из следующих строк:
public void delTask_mouseClicked(MouseEvent e)
{
if(delTask.isEnabled() == false) { // <--
int numTasks = taskTable.getRowCount(); // <--
Object[] currentTasks;
currentTasks = new Object[numTasks];
for (int i = 0; i < numTasks ; i++){
Object tasks = taskTable.getModel().getValueAt(i, 1); // <--
currentTasks[i] = tasks;
}
System.out.println(currentTasks);
}
}
Первое будет, потому что delTask
само по себе равно нулю, второе, если taskTable
равно нулю.
Третье будет, если taskTable
само по себе допустимо, но значение, возвращаемое его методом getModel()
, равно нулю..
Итак, похоже, что ваш taskTable
равен нулю.Что касается , почему это так, это непостижимо, исходя из текущей информации.Что вам нужно будет сделать, это проверить все места, для которых установлено допустимое значение, и убедиться, что это происходит за до того, что вы (или, скорее всего, AWT под контролем вашего пользователя) вызовете этот метод.
И, конечно же, убедитесь, что в какой-то момент после создания он не имеет значения NULL.
Если вы не можете гарантировать, что вам, вероятно, потребуется изменить:
if (delTask.isEnabled() == false)
примерно так:
if ((! delTask.isEnabled()) && (taskTable != NULL))
, но я бы предпочел исправить причину проблемы, а не применять этот лейкопластырь.
Ваш кодэто создает JTable
, кажется, хорошо (синтаксически), но есть небольшая загадка , где это сделано.Он создан таким образом, чтобы его можно было использовать там, где вы пытаетесь его использовать.
Например, если этот код, который его создает, находится внутри конструктора, этот конкретный taskTable
будет локальным по отношению к указанному конструктору.(и уничтожается при выходе), не может использоваться из других источников.В этом случае необходимо сделать переменную уровня объекта, чтобы другие методы могли получить к ней доступ.
Вы можете увидеть этот эффект в следующей программе:
public class testprog {
public Object thingOne;
public Object thingTwo;
public void someFunction() {
thingOne = new Object();
Object thingTwo = new Object();
}
public void debug() {
if (thingOne == null)
System.out.println ("thingOne is NULL");
else
System.out.println ("thingOne is valid");
if (thingTwo == null)
System.out.println ("thingTwo is NULL");
else
System.out.println ("thingTwo is valid");
}
public static void main(String args[]) {
testprog tp = new testprog();
tp.someFunction();
tp.debug();
}
}
Это выводит:
thingOne is valid
thingTwo is NULL
, поскольку thje thingTwo
, установленный в someFunction()
, является локальной версией и никоим образом не устанавливает уровень объекта thingTwo
- уровень объектаодин остается как null
, и, если вы попытаетесь разыменовать его, вы увидите ту же проблему, что и у вас.
(a) best Отчеты о проблемах поставляются с небольшим полным фрагментом кода, демонстрирующим проблему, ожидаемое поведение и фактическое поведение.
Если мы разместим ваш образец в голом Eclipse JavaПрограмма, она очень не завершена.MouseEvent
, delTask
и taskTable
не имеют определений, и без этой информации немного сложно отладить.
Кроме того, Eclipse (для синтаксических ошибок) и сама Java (для ошибок времени выполнения)Я могу в мельчайших подробностях рассказать вам о своих проблемах, и вы должны прочитать то, что вам говорит.Вы также должны сообщить нам эту информацию, если вам нужна помощь: -)