getFocusOwner() の作業に助けが必要です。Java で作成した数独ゲームがあり、プログラムに矢印キー ナビゲーションを追加したいと考えています。いくつかの調査を行ったところ、フォーカス システムを使用することが最善の方法であることがわかりました (そうでない場合は、より良い方法を教えてください。調査できます)。
さて、テスト目的で、JTextField を拡張するカスタム クラスである SetField にフォーカスを設定しようとしています (数字以外の入力を無効にしたかったため)。フォーカス可能に設定されています。グリッドの中央にある SetField で requestFocusInWindow() を呼び出すと、そのコンポーネントにフォーカスが設定されます。フォーカスのあるコンポーネントを取得しようとすると、問題が発生します。
これは、getFocusOwner() メソッドをテストするために行っていることです。
sGrid[40].requestFocusInWindow();
try{
System.out.println(this.getFocusOwner().getClass().getSimpleName());
} catch(NullPointerException e){
e.printStackTrace();
}
これをどのコンポーネントで試しても、常に null ポインター例外が発生します。プログラムの JButtons、JLabels、さらには JPanels でも試してみました。ただし、フォーカスはコンポーネントに設定されています。意図した SetField でキャレットが点滅していることがわかります。私が間違っていることはありますか?助けてくれてありがとう。