Module java.desktop
Package java.awt.event

Class FocusEvent

所有已实现的接口:
Serializable

public class FocusEvent extends ComponentEvent
表示组件已获得或失去输入焦点的低级事件。此低级事件由组件(例如TextField)生成。事件传递给每个使用组件的addFocusListener方法注册接收此类事件的FocusListenerFocusAdapter对象。(FocusAdapter对象实现FocusListener接口。)每个这样的监听器对象在事件发生时都会收到此FocusEvent

焦点事件有两个级别:永久和临时。永久焦点更改事件发生在焦点直接从一个组件移动到另一个组件时,例如通过调用requestFocus()或用户使用TAB键遍历组件。临时焦点更改事件发生在焦点暂时丢失为组件的间接结果时,例如窗口停用或滚动条拖动。在这种情况下,一旦该操作完成,或者对于窗口停用的情况,当窗口重新激活时,原始焦点状态将自动恢复。永久和临时焦点事件使用FOCUS_GAINED和FOCUS_LOST事件ID进行传递;可以使用isTemporary()方法在事件中区分级别。

每个FocusEvent记录其原因 - 生成此事件的原因。原因在焦点事件创建期间分配,并且可以通过调用getCause()来检索。

如果任何特定FocusEvent实例的id参数不在从FOCUS_FIRSTFOCUS_LAST的范围内,则将导致未指定的行为。

自:
1.1
参见:
  • Field Details

    • FOCUS_FIRST

      public static final int FOCUS_FIRST
      用于焦点事件的ID范围中的第一个数字。
      参见:
    • FOCUS_LAST

      public static final int FOCUS_LAST
      用于焦点事件的ID范围中的最后一个数字。
      参见:
    • FOCUS_GAINED

      public static final int FOCUS_GAINED
      此事件指示组件现在是焦点所有者。
      参见:
    • FOCUS_LOST

      public static final int FOCUS_LOST
      此事件指示组件不再是焦点所有者。
      参见:
  • Constructor Details

    • FocusEvent

      public FocusEvent(Component source, int id, boolean temporary, Component opposite)
      使用指定的临时状态、相反的ComponentCause.UNKNOWN原因构造一个FocusEvent对象。相反的Component是此焦点更改中涉及的另一个Component。对于FOCUS_GAINED事件,这是失去焦点的Component。对于FOCUS_LOST事件,这是获得焦点的Component。如果此焦点更改发生在本机应用程序、不同VM中的Java应用程序或没有其他Component的情况下,则相反的Componentnull

      如果sourcenull,则此方法会抛出IllegalArgumentException

      参数:
      source - 生成事件的Component
      id - 指示事件类型的整数。有关允许值的信息,请参阅FocusEvent的类描述
      temporary - 如果焦点更改是临时的,则等于true;否则为false
      opposite - 参与焦点更改的另一个组件,或null
      抛出:
      IllegalArgumentException - 如果source等于null
      自:
      1.4
      参见:
    • FocusEvent

      public FocusEvent(Component source, int id, boolean temporary, Component opposite, FocusEvent.Cause cause)
      使用指定的临时状态、相反的Component和原因构造一个FocusEvent对象。相反的Component是此焦点更改中涉及的另一个Component。对于FOCUS_GAINED事件,这是失去焦点的Component。对于FOCUS_LOST事件,这是获得焦点的Component。如果此焦点更改发生在本机应用程序、不同VM中的Java应用程序或没有其他Component的情况下,则相反的Componentnull

      如果sourcecausenull,则此方法会抛出IllegalArgumentException

      参数:
      source - 生成事件的Component
      id - 指示事件类型的整数。有关允许值的信息,请参阅FocusEvent的类描述
      temporary - 如果焦点更改是临时的,则等于true;否则为false
      opposite - 参与焦点更改的另一个组件,或null
      cause - 焦点事件原因
      抛出:
      IllegalArgumentException - 如果source等于null或如果cause等于null
      自:
      9
      参见:
    • FocusEvent

      public FocusEvent(Component source, int id, boolean temporary)
      构造一个FocusEvent对象,并标识更改是否为临时。

      如果sourcenull,则此方法会抛出IllegalArgumentException

      参数:
      source - 生成事件的Component
      id - 指示事件类型的整数。有关允许值的信息,请参阅FocusEvent的类描述
      temporary - 如果焦点更改是临时的,则等于true;否则为false
      抛出:
      IllegalArgumentException - 如果source等于null
      参见:
    • FocusEvent

      public FocusEvent(Component source, int id)
      构造一个FocusEvent对象,并将其标识为焦点永久更改。

      如果sourcenull,则此方法会抛出IllegalArgumentException

      参数:
      source - 触发事件的Component
      id - 表示事件类型的整数。有关允许值的信息,请参阅FocusEvent的类描述
      抛出:
      IllegalArgumentException - 如果source等于null
      参见:
  • Method Details

    • isTemporary

      public boolean isTemporary()
      将焦点变更事件标识为临时或永久。
      返回:
      如果焦点变更是临时的,则返回true; 否则返回false
    • getOppositeComponent

      public Component getOppositeComponent()
      返回与此焦点变更相关的另一个Component。对于FOCUS_GAINED事件,这是失去焦点的Component。对于FOCUS_LOST事件,这是获得焦点的Component。如果此焦点变更发生在本机应用程序中,与不同VM或上下文中的Java应用程序中,或者没有其他Component中,则返回null。
      返回:
      与焦点变更相关的另一个Component,或null
      自:
      1.4
    • paramString

      public String paramString()
      返回标识此事件的参数字符串。此方法对于事件记录和调试很有用。
      覆盖:
      paramString 在类 ComponentEvent
      返回:
      一个标识事件及其属性的字符串
    • getCause

      public final FocusEvent.Cause getCause()
      返回事件原因。
      返回:
      FocusEvent.Cause值之一
      自:
      9