Здесь:
private void jTextGrossPayMouseEntered(
указывает, что этот код выполняется, когда мышь вводит некоторый компонент на вашем экране.
Вы должны понимать: мышь, двигающаяся куда-то, не - это то же самое, что "пользователь ввел всю необходимую информацию во все текстовые поля".
Тогда:
double salary = Double.parseDouble(jTextBasicSalary.getText());
Что вы могли бы / должны сделать: проверить содержимое ваших текстовых полей, прежде чем делать что-либо с их содержимым!
Значение: прежде чем даже думать о разборе, вы должны проверить, содержит ли текстовое поле непустую строку. Если это так, вы можете выполнить этот анализ в блоке try / catch. И если синтаксический анализ завершится неудачно, вы можете показать пользователю окно сообщения, сообщающее ему, чего вы ожидаете от него. Вы должны сделать это для всех ваших текстовых полей отдельно.
И как было сказано изначально: спросите себя , когда , что проверка / анализ должны произойти. Должно ли это случиться, когда мышь входит в «что-то»? Или это будет больше похоже на то, что должно произойти при нажатии какой-либо кнопки?
Итак: решение может также состоять в том, чтобы написать этот новый код и поместить его в своего рода слушатель действий. Это реагирует на действия, такие как нажатие кнопок или выбор пункта меню!