Имам нужда от помощ при работа с getFocusOwner(). Имам игра судоку, която направих в Java и искам да добавя навигация със стрелки към програмата. Направих някои проучвания и открих, че използването на системата за фокусиране би било най-добрият начин (ако не е, моля, дайте ми по-добър начин и мога да го проуча).
Добре, за целите на тестването се опитвам да задам фокус върху SetField, персонализиран клас, разширяващ JTextField(Custom, защото исках да деактивирам всички входове, които не са числа). Настроен е на възможност за фокусиране. Извиках requestFocusInWindow() на SetField в средата на мрежата и фокусът е зададен на този компонент. Проблемът възниква, когато се опитам да извлека компонента, който има фокус.
Това е, което правя, за да тествам метода getFocusOwner():
sGrid[40].requestFocusInWindow();
try{
System.out.println(this.getFocusOwner().getClass().getSimpleName());
} catch(NullPointerException e){
e.printStackTrace();
}
Без значение на какъв компонент опитам това, винаги получавам изключение за нулев указател. Опитах го с JButtons, JLabels и дори на JPanels в моята програма. Фокусът обаче е поставен върху компонента. Виждам каретката да мига в желаното SetField. Има ли нещо, което правя грешно? Благодаря предварително за всяка помощ.