Это имеет смысл. Вы создаете 2 экземпляра GUI. Один в вашей основной функции и один в классе задачи.
Для экземпляра в основной функции: вы показываете фрейм с помощью setVisible и позволяете пользователю сделать выбор в выпадающем списке.
Для другого экземпляра в классе задачи, который вы никогда не показываете на экране, пользователь никогда не сможет выбрать что-то в этом экземпляре.
Тем не менее, в этом случае вы получаете индекс выпадающего списка. Это точно ноль.
Вы не должны создавать новый экземпляр в классе задачи, а должны передавать показанный в качестве аргумента классу проблемы, например, Problem problemObject = new Problem (this);
Затем укажите его в конструкторе задачи в качестве аргумента, а не в создании нового.