我需要帮助工作 getFocusOwner()。我有一个用 Java 制作的数独游戏,我想在程序中添加箭头键导航。我做了一些研究,发现使用焦点系统是最好的方法(如果不是,请给我一个更好的方法,我可以研究)。
好的,因此出于测试目的,我试图将焦点设置为 SetField,这是一个扩展 JTextField 的自定义类(自定义,因为我想禁用任何不是数字的输入)。它已设置为可聚焦。我在网格中间的 SetField 上调用 requestFocusInWindow(),并将焦点设置到该组件。当我尝试检索具有焦点的组件时,就会出现问题。
这就是我正在做的测试 getFocusOwner() 方法:
sGrid[40].requestFocusInWindow();
try{
System.out.println(this.getFocusOwner().getClass().getSimpleName());
} catch(NullPointerException e){
e.printStackTrace();
}
无论我在什么组件上尝试这个,我总是得到空指针异常。我在我的程序中使用 JButtons、JLabels 甚至 JPanel 进行了尝试。焦点设置在组件上。我可以看到插入符号在预期的 SetField 中闪烁。有什么我做错了吗?提前感谢您的帮助。