Переменная only , которая в этой строке имеет значение null и вызывает это исключение employeeDetails2, поэтому вы должны оглянуться назад в своем коде, чтобы увидеть, назначаете ли вы объект этой переменной и где именно. После этого вы увидите, что вы присваиваете объект employeeDetails2 в конструкторе класса guiEmployee1, но сразу после этого вы повторно объявляете переменную в конструкторе. Таким образом, локальной переменной employeeDetails2 был присвоен объект, а не поле класса, которое никогда не инициализируется. Это называется изменением теней. Решение не состоит в том, чтобы повторно объявить переменную в конструкторе.
т.е:.
public guiEmployee1()
{
JButton submit;
JButton b1;
System.out.println("cabanas");
JFrame frame = new JFrame();
employeeDetails1 = new JTextField(10);
// JTextField employeeDetails2; ***** comment out this line *****
employeeDetails2 = new JTextField(10);
Далее, вы захотите переименовать ваши переменные, чтобы ваш код стал «комментировать». Другими словами, вместо того, чтобы давать переменной такое общее имя, как employeeDetailsX, почему бы вместо этого не назвать его lastNameField, а перед ним firstNameField и кнопку «b1» для submitButton? Таким образом, при отладке кода вы будете точно знать, что он должен делать?