SetFocusable方法或聚焦组件Java



我看到了这段代码:

public class Board extends JPanel implements ActionListener{
    public Board() {
        setFocusable(true); 
    }
}

setFocusable(true)到底对JPanel对象做了什么?关注组件的概念是什么?

基于Java API,该方法位于Component类中,即JPanel的超类。方法描述声明"将此组件的可聚焦状态设置为指定的值"。该值覆盖组件的默认focusability。对我(我在夏天刚上完Java课)来说,这种描述听起来过于技术性和高级术语了。有时,我认为这些方法描述并不是为具有不同Java知识水平的所有人编写的。有人能用外行人的话解释一下方法描述吗?

focusable标志指示组件是否可以在请求时获得焦点。默认情况下,JPanel组件是可对焦的,所以当您将其设置为true时,不会改变任何内容。

不能对焦的组件不能获得对焦。

假设您已经实现了一个带有几个文本字段的对话框,并且您希望用户输入一些文本。当用户开始输入时,一个文本字段需要成为应用程序的焦点:它将是接收键盘输入的字段。

当您实现焦点遍历(用户从一个文本字段跳转到下一个文本字段的方便方法,例如通过使用tab按钮)时,用户可以"跳转"到下一个文本字段。应用程序将尝试获取下一个字段的焦点,以便准备接收文本。当下一个字段不可聚焦时,此请求将被拒绝,并将测试下一个字段。例如,您不希望标签获得焦点,因为您不能在其中输入文本。

Component类中,可聚焦标志默认设置为true。当您构造从Component类派生的对象时(例如,当您构造JPanel时),将调用Component类的构造函数并将默认的可聚焦标志设置为true

希望覆盖此默认值的派生类可以调用setFocusable方法来更改该默认值,就像您在示例中所做的那样。

注意setFocusable本身并没有设置焦点,它只是提供了潜在地为组件获得焦点的能力。

您可以使用setFocusable(boolean n),它主要用于在触觉/鼠标模式和键盘(光标)模式下激活或停用视图的焦点事件(选择用于接收输入的图形用户界面的组件)。

setFocusable()实际上是Swing中Component类的一个方法。

public void setFocusable(boolean focusable)

它让组件(在您的例子中,JPanel扩展了 Component)具有聚焦的能力。它实际上并没有将组件设置为聚焦,它只是指示组件是否可以聚焦,这是由传递的布尔参数决定的。

相关内容

  • 没有找到相关文章

最新更新