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