模块 java.desktop
 java.awt

类 Window

所有已实现的接口:
ImageObserver , MenuContainer , Serializable , Accessible
已知子类:
BasicToolBarUI.DragWindow , Dialog , Frame , JWindow

public class Window extends Container implements Accessible
Window 对象是没有边框和菜单栏的顶级窗口。窗口的默认布局是 BorderLayout

一个窗口在构造时必须有一个框架、对话框或另一个定义为它的所有者的窗口。

在多屏环境中,您可以通过构造WindowWindow(Window, GraphicsConfiguration) 来在不同的屏幕设备上创建WindowGraphicsConfiguration 对象是目标屏幕设备的 GraphicsConfiguration 对象之一。

在桌面区域可以跨越多个物理屏幕设备的虚拟设备多屏环境中,所有配置的边界都是相对于虚拟设备坐标系的。虚拟坐标系的原点位于主物理屏幕的左上角。根据主屏幕在虚拟设备中的位置,负坐标是可能的,如下图所示。

Diagram shows virtual device containing 4 physical screens. Primary
 physical screen shows coords (0,0), other screen shows (-80,-100).

在这样的环境下,调用setLocation时,必须向该方法传递一个虚拟坐标。同样,在 Window 上调用 getLocationOnScreen 会返回虚拟设备坐标。调用GraphicsConfigurationgetBounds方法在虚拟坐标系中找到它的原点。

以下代码将 Window 的位置设置为 (10, 10) 相对于相应 GraphicsConfiguration 的物理屏幕的原点。如果不考虑 GraphicsConfiguration 的边界,则 Window 位置将设置为相对于虚拟坐标系的 (10, 10),并且会出现在主物理屏幕上,这可能与指定 GraphicsConfiguration

   Window w = new Window(Window owner, GraphicsConfiguration gc);
   Rectangle bounds = gc.getBounds();
   w.setLocation(10 + bounds.x, 10 + bounds.y);
 

注意:顶层窗口(包括Windows、Frames和Dialogs)的位置和大小由桌面的窗口管理系统控制。对 setLocationsetSizesetBounds 的调用是转发到窗口管理系统的请求(不是指令)。将尽一切努力满足此类要求。但是,在某些情况下,窗口管理系统可能会忽略此类请求,或修改请求的几何图形,以便以更接近桌面设置的方式放置和调整 Window 的大小。

桌面窗口管理系统可以将光晕、阴影、运动效果和动画等视觉效果应用于窗口。这些在 AWT 的知识和控制之外,因此出于本规范的目的,它们不被视为顶级窗口的一部分。

由于本机事件处理的异步性质,在处理最后一个请求之前,getBoundsgetLocationgetLocationOnScreengetSize 返回的结果可能不会反映屏幕上窗口的实际几何形状。在后续请求的处理过程中,这些值可能会在窗口管理系统完成请求时相应地发生变化。

应用程序可以任意设置不可见 Window 的大小和位置,但是当 Window 可见时,窗口管理系统可能随后更改其大小和/或位置。将生成一个或多个 ComponentEvent 以指示新的几何图形。

Windows 能够生成以下 WindowEvent:WindowOpened、WindowClosed、WindowGainedFocus、WindowLostFocus。

自从:
1.0
参见:
  • 构造方法详细信息

    • Window

      public Window(Frame  owner)
      以指定的 Frame 作为其所有者构造一个新的、最初不可见的窗口。除非窗口的所有者显示在屏幕上,否则该窗口将无法获得焦点。

      如果设置了安全管理器,则会调用它来检查 AWTPermission("showWindowWithoutWarningBanner") 。如果该检查失败并显示 SecurityException,则会创建一个警告横幅。

      参数:
      owner - 充当所有者的 Framenull 如果此窗口没有所有者
      抛出:
      IllegalArgumentException - 如果 ownerGraphicsConfiguration 不是来自屏幕设备
      HeadlessException - 当 GraphicsEnvironment.isHeadless 返回 true
      参见:
    • Window

      public Window(Window  owner)
      以指定的 Window 作为其所有者构造一个新的、最初不可见的窗口。此窗口将不可聚焦,除非它最近的所有者 FrameDialog 显示在屏幕上。

      如果设置了安全管理器,则会调用它来检查 AWTPermission("showWindowWithoutWarningBanner") 。如果该检查失败并显示 SecurityException,则会创建一个警告横幅。

      参数:
      owner - 充当所有者的 Windownull 如果此窗口没有所有者
      抛出:
      IllegalArgumentException - 如果 ownerGraphicsConfiguration 不是来自屏幕设备
      HeadlessException - 当 GraphicsEnvironment.isHeadless() 返回 true
      自从:
      1.2
      参见:
    • Window

      public Window(Window  owner, GraphicsConfiguration  gc)
      使用屏幕设备的指定所有者 WindowGraphicsConfiguration 构造一个新的、最初不可见的窗口。除非在屏幕上显示最近拥有的 FrameDialog,否则该窗口将不可聚焦。

      如果设置了安全管理器,则会调用它来检查 AWTPermission("showWindowWithoutWarningBanner") 。如果该检查失败并显示 SecurityException,则会创建一个警告横幅。

      参数:
      owner - 充当所有者的窗口或 null(如果此窗口没有所有者)
      gc - 目标屏幕设备的GraphicsConfiguration;如果 gcnull ,则假定系统默认值 GraphicsConfiguration
      抛出:
      IllegalArgumentException - 如果 gc 不是来自屏幕设备
      HeadlessException - 当 GraphicsEnvironment.isHeadless() 返回 true
      自从:
      1.3
      参见:
  • 方法详情

    • getIconImages

      public List <Image > getIconImages()
      返回要显示为该窗口图标的图像序列。

      此方法返回内部存储列表的副本,因此对返回对象的所有操作都不会影响窗口的行为。

      返回:
      此窗口的图标图像列表的副本,如果此窗口没有图标图像,则为空列表。
      自从:
      1.6
      参见:
    • setIconImages

      public void setIconImages(List <? extends Image > icons)
      设置要显示为该窗口图标的图像序列。对 getIconImages 的后续调用将始终返回 icons 列表的副本。

      根据平台功能,一个或多个不同尺寸的图像将用作窗口的图标。

      icons 列表还可以包含 MultiResolutionImage 图像。根据屏幕分辨率,从基本 MultiResolutionImage 图像中提取合适的图像并添加到图标列表中,同时从列表中删除基本分辨率图像。 icons 列表从一开始就扫描最合适尺寸的图像。如果列表包含多个相同大小的图像,将使用第一个。

      没有指定图标的无主窗口使用平台默认图标。拥有窗口的图标可以从所有者继承,除非明确覆盖。将图标设置为 null 或空列表可恢复默认行为。

      注意:本机窗口系统可能会使用不同尺寸的不同图像来表示窗口,这取决于上下文(例如窗口装饰、窗口列表、任务栏等)。他们还可以针对所有上下文只使用一个图像,或者根本不使用图像。

      参数:
      icons - 要显示的图标图像列表。
      自从:
      1.6
      参见:
    • setIconImage

      public void setIconImage(Image  image)
      设置要显示为该窗口图标的图像。

      可以使用此方法代替 setIconImages() 将单个图像指定为窗口的图标。

      以下声明:

         setIconImage(image);
       
      等同于:
         ArrayList<Image> imageList = new ArrayList<Image>();
         imageList.add(image);
         setIconImages(imageList);
       

      注意:本机窗口系统可能会使用不同尺寸的不同图像来表示窗口,这取决于上下文(例如窗口装饰、窗口列表、任务栏等)。他们还可以针对所有上下文只使用一个图像,或者根本不使用图像。

      参数:
      image - 要显示的图标图像。
      自从:
      1.6
      参见:
    • addNotify

      public void addNotify()
      通过创建与其本机屏幕资源的连接,使此窗口可显示。此方法由工具包内部调用,不应由程序直接调用。
      重写:
      addNotify 在类 Container
      自从:
      1.0
      参见:
    • pack

      public void pack()
      使此 Window 的大小适合其子组件的首选大小和布局。如果任一尺寸小于先前调用 setMinimumSize 方法指定的最小尺寸,则窗口的最终宽度和高度将自动放大。

      如果窗口和/或其所有者还不可显示,则在计算首选大小之前将它们都设置为可显示。窗口在计算其大小后进行验证。

      参见:
    • setMinimumSize

      public void setMinimumSize(Dimension  minimumSize)
      将此窗口的最小大小设置为常量值。对 getMinimumSize 的后续调用将始终返回此值。如果当前窗口的大小小于 minimumSize 窗口的大小会自动放大以符合最小大小。

      如果之后调用 setSizesetBounds 方法且宽度或高度小于 setMinimumSize 方法指定的宽度或高度,则窗口会自动放大以满足 minimumSize 值。 minimumSize 值也会影响 pack 方法的行为。

      通过将最小大小参数设置为 null 值来恢复默认行为。

      如果用户尝试将窗口大小调整为低于 minimumSize 值,则调整大小操作可能会受到限制。此行为取决于平台。

      重写:
      setMinimumSize 在类 Component
      参数:
      minimumSize - 此窗口的新最小尺寸
      自从:
      1.6
      参见:
    • setSize

      public void setSize(Dimension  d)
      调整此组件的大小,使其具有宽度 d.width 和高度 d.height

      此方法更改与布局相关的信息,因此使组件层次结构无效。

      如果 d.widthd.height 值中的任何一个小于之前调用 setMinimumSize 指定的最小大小,则会自动放大。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      重写:
      setSize 在类 Component
      参数:
      d - 指定该组件新尺寸的维度
      自从:
      1.6
      参见:
    • setSize

      public void setSize(int width, int height)
      调整此组件的大小,使其具有宽度 width 和高度 height

      此方法更改与布局相关的信息,因此使组件层次结构无效。

      如果 widthheight 值中的任何一个小于之前调用 setMinimumSize 指定的最小大小,则会自动放大。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      重写:
      setSize 在类 Component
      参数:
      width - 此组件的新宽度(以像素为单位)
      height - 该组件的新高度(以像素为单位)
      自从:
      1.6
      参见:
    • setLocation

      public void setLocation(int x, int y)
      将此组件移动到新位置。新位置的左上角由该组件父级坐标空间中的xy 参数指定。

      此方法更改与布局相关的信息,因此使组件层次结构无效。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      重写:
      setLocation 在类 Component
      参数:
      x - 的x-父坐标空间中新位置左上角的坐标
      y - 的y-父坐标空间中新位置左上角的坐标
      参见:
    • setLocation

      public void setLocation(Point  p)
      将此组件移动到新位置。新位置的左上角由点 p 指定。点 p 在父坐标空间中给出。

      此方法更改与布局相关的信息,因此使组件层次结构无效。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      重写:
      setLocation 在类 Component
      参数:
      p - 定义新位置左上角的点,在该组件父级的坐标空间中给出
      参见:
    • reshape

      @Deprecated public void reshape(int x, int y, int width, int height)
      已弃用。
      从 JDK 1.1 版开始,由 setBounds(int, int, int, int) 取代。
      从类复制的描述:Component
      重塑此组件的边界矩形。
      重写:
      reshape 在类 Component
      参数:
      x - 的x矩形左上角的坐标
      y - 的y矩形左上角的坐标
      width - 矩形的宽度
      height - 矩形的高度
    • setVisible

      public void setVisible(boolean b)
      根据参数 b 的值显示或隐藏此 Window

      如果该方法显示窗口,则该窗口也会在以下条件下获得焦点:

      • Window 满足 isFocusableWindow() 方法中概述的要求。
      • WindowautoRequestFocus 属性具有 true 值。
      • 本机窗口系统允许 Window 获得焦点。
      第二个条件(autoRequestFocus 属性的值)存在异常。如果窗口是模态对话框,则不会考虑该属性,它会阻止当前获得焦点的窗口。

      在接收到 WINDOW_GAINED_FOCUS 或 WINDOW_ACTIVATED 事件之前,开发人员绝不能假定该窗口是焦点窗口或活动窗口。

      重写:
      setVisible 在类 Component
      参数:
      b - 如果是 true,则使 Window 可见,否则隐藏 Window。如果 Window 和/或其所有者尚不可显示,则两者都可显示。 Window 将在可见之前进行验证。如果 Window 已经可见,这会将 Window 带到前面。

      如果是 false ,则隐藏此 Window 、其子组件及其所有子组件。 Window 及其子组件可以通过调用 #setVisible(true) 再次可见。

      参见:
    • show

      @Deprecated public void show()
      已弃用。
      从 JDK 1.5 版开始,由 setVisible(boolean) 取代。
      使窗口可见。如果 Window 和/或其所有者尚不可显示,则两者都可显示。窗口将在可见之前进行验证。如果 Window 已经可见,这会将 Window 置于最前面。
      重写:
      show 在类 Component
      参见:
    • hide

      @Deprecated public void hide()
      已弃用。
      从 JDK 1.5 版开始,由 setVisible(boolean) 取代。
      隐藏此 Window、它的子组件以及它拥有的所有子组件。通过调用 show 可以使 Window 及其子组件再次可见。
      重写:
      hide 在类 Component
      参见:
    • dispose

      public void dispose()
      释放此 Window、其子组件及其所有子组件使用的所有本机屏幕资源。也就是说,这些 Component 的资源将被销毁,它们消耗的任何内存都将返回给操作系统,并且它们将被标记为不可显示。

      通过随后调用 packshow 重建本机资源,可以使 Window 及其子组件再次显示。重新创建的 Window 及其子组件的状态将与处理 Window 时这些对象的状态相同(不考虑这些操作之间的额外修改)。

      笔记:当 Java 虚拟机 (VM) 中的最后一个可显示窗口被处理掉时,VM 可能会终止。有关详细信息,请参阅 AWT 线程问题

      参见:
    • toFront

      public void toFront()
      如果此 Window 可见,则将此 Window 置于最前面,并可能使其成为焦点窗口。

      在此 VM 中任何其他窗口的前面。如果此窗口不可见,则不会执行任何操作。某些平台不允许拥有其他 Windows 的 Windows 出现在那些拥有的 Windows 之上。某些平台可能不允许此 VM 将其 Windows 放置在本机应用程序的窗口或其他 VM 的窗口之上。此权限可能取决于此 VM 中的窗口是否已获得焦点。将尽一切努力将此 Window 移动到堆叠顺序中尽可能高的位置;但是,开发人员不应假设此方法在任何情况下都会将此窗口移至所有其他窗口之上。

      在该窗口收到 WINDOW_GAINED_FOCUS 或 WINDOW_ACTIVATED 事件之前,开发人员绝不能假定该窗口是获得焦点或活动的窗口。在最顶层窗口是焦点窗口的平台上,此方法将大概在以下条件下聚焦此窗口(如果它尚未聚焦):

      • 该窗口满足 isFocusableWindow() 方法中概述的要求。
      • 窗口的属性 autoRequestFocus 的值为 true
      • 本机窗口系统允许窗口获得焦点。
      在堆叠顺序通常不会影响焦点窗口的平台上,此方法将大概保持焦点和活动窗口不变。

      如果此方法使此窗口获得焦点,并且此窗口是框架或对话框,它也会被激活。如果此窗口获得焦点,但它不是框架或对话框,则作为此窗口所有者的第一个框架或对话框将被激活。

      如果此窗口被模态对话框阻塞,则阻塞对话框将被带到前面并保持在被阻塞窗口的上方。

      参见:
    • toBack

      public void toBack()
      如果此窗口可见,则将此窗口发送到后面,如果它是焦点或活动窗口,则可能会导致它失去焦点或激活。

      将此窗口置于堆叠顺序的底部,并显示在该 VM 中任何其他窗口的后面。如果此窗口不可见,则不会执行任何操作。某些平台不允许其他 Windows 拥有的 Windows 显示在其所有者下方。将尽一切努力将此窗口移到堆叠顺序中尽可能低的位置;但是,开发人员不应假设此方法在任何情况下都会将此窗口移动到所有其他窗口下方。

      由于本机窗口系统的变化,无法保证对焦点和活动窗口的更改。在该窗口收到 WINDOW_LOST_FOCUS 或 WINDOW_DEACTIVATED 事件之前,开发人员绝不能假设该窗口不再是焦点窗口或活动窗口。在最顶层窗口是焦点窗口的平台上,此方法将大概导致此窗口失去焦点。在这种情况下,此 VM 中下一个最高的可聚焦窗口将获得焦点。在堆叠顺序通常不会影响焦点窗口的平台上,此方法将大概保持焦点和活动窗口不变。

      参见:
    • getToolkit

      public Toolkit  getToolkit()
      返回此框架的工具包。
      重写:
      getToolkit 在类 Component
      返回:
      此窗口的工具包。
      参见:
    • getWarningString

      public final String  getWarningString()
      获取随此窗口显示的警告字符串。如果此窗口不安全,则警告字符串会显示在窗口可见区域的某处。如果存在安全管理器并且安全管理器拒绝 AWTPermission("showWindowWithoutWarningBanner") ,则窗口是不安全的。

      如果窗口是安全的,则 getWarningString 返回 null 。如果窗口不安全,此方法将检查系统属性 awt.appletWarning 并返回该属性的字符串值。

      返回:
      此窗口的警告字符串。
    • getLocale

      public Locale  getLocale()
      如果已设置区域设置,则获取与此窗口关联的 Locale 对象。如果未设置locale,则返回默认locale。
      重写:
      getLocale 在类 Component
      返回:
      为此窗口设置的locale。
      自从:
      1.1
      参见:
    • getInputContext

      public InputContext  getInputContext()
      获取此窗口的输入上下文。一个窗口总是有一个输入上下文,它由子组件共享,除非它们创建和设置自己的。
      重写:
      getInputContext 在类 Component
      返回:
      该组件使用的输入上下文; null 如果无法确定上下文
      自从:
      1.2
      参见:
    • setCursor

      public void setCursor(Cursor  cursor)
      将光标图像设置为指定的光标。

      如果 Java 平台实现和/或本机系统不支持更改鼠标光标形状,则该方法可能没有视觉效果。

      重写:
      setCursor 在类 Component
      参数:
      cursor - Cursor 类定义的常量之一。如果此参数为空,则此窗口的光标将设置为 Cursor.DEFAULT_CURSOR 类型。
      自从:
      1.1
      参见:
    • getOwner

      public Window  getOwner()
      返回此窗口的所有者。
      返回:
      这个窗口的所有者
      自从:
      1.2
    • getOwnedWindows

      public Window [] getOwnedWindows()
      返回包含此窗口当前拥有的所有窗口的数组。
      返回:
      所有拥有的窗口的数组
      自从:
      1.2
    • getWindows

      public static Window [] getWindows()
      返回此应用程序创建的所有 Window 的数组,包括拥有的和无主的。如果从小程序调用,则该数组仅包含该小程序可访问的 Window

      警告:此方法可能会返回系统创建的窗口,例如打印对话框。应用程序不应假定这些对话框的存在,也不应假定有关这些对话框的任何信息,例如组件位置、LayoutManagers 或序列化。

      返回:
      应用程序创建的所有 Window 的数组
      自从:
      1.6
      参见:
    • getOwnerlessWindows

      public static Window [] getOwnerlessWindows()
      返回此应用程序创建的没有所有者的所有 Window 的数组。它们包括 Frame s 和无主的 Dialog s 和 Window s。如果从小程序调用,则该数组仅包含该小程序可访问的 Window

      警告:此方法可能会返回系统创建的窗口,例如打印对话框。应用程序不应假定这些对话框的存在,也不应假定有关这些对话框的任何信息,例如组件位置、LayoutManagers 或序列化。

      返回:
      此应用程序创建的所有无主 Window 的数组
      自从:
      1.6
      参见:
    • setModalExclusionType

      public void setModalExclusionType(Dialog.ModalExclusionType  exclusionType)
      指定此窗口的模态排除类型。如果窗口是模态排除的,则它不会被某些模态对话框阻止。有关可能的模态排除类型,请参阅 Dialog.ModalExclusionType

      如果不支持给定类型,则使用 NO_EXCLUDE

      注意:更改可见窗口的模态排除类型可能无效,直到它被隐藏然后再次显示。

      参数:
      exclusionType - 此窗口的模态排除类型; null 值相当于 NO_EXCLUDE
      抛出:
      SecurityException - 如果调用线程无权将模态排除属性设置为具有给定 exclusionType 的窗口
      自从:
      1.6
      参见:
    • getModalExclusionType

      public Dialog.ModalExclusionType  getModalExclusionType()
      返回此窗口的模态排除类型。
      返回:
      此窗口的模态排除类型
      自从:
      1.6
      参见:
    • addWindowListener

      public void addWindowListener(WindowListener  l)
      添加指定的窗口监听以从该窗口接收窗口事件。如果 l 为 null,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 窗口监听器
      参见:
    • addWindowStateListener

      public void addWindowStateListener(WindowStateListener  l)
      添加指定的窗口状态监听器以接收来自该窗口的窗口事件。如果 lnull ,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 窗口状态监听器
      自从:
      1.4
      参见:
    • addWindowFocusListener

      public void addWindowFocusListener(WindowFocusListener  l)
      添加指定的窗口焦点监听以接收来自该窗口的窗口事件。如果 l 为null,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 窗口焦点监听器
      自从:
      1.4
      参见:
    • removeWindowListener

      public void removeWindowListener(WindowListener  l)
      删除指定的窗口监听,以便它不再接收来自该窗口的窗口事件。如果 l 为 null,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 窗口监听器
      参见:
    • removeWindowStateListener

      public void removeWindowStateListener(WindowStateListener  l)
      删除指定的窗口状态监听器,以便它不再接收来自该窗口的窗口事件。如果 lnull ,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 窗口状态监听器
      自从:
      1.4
      参见:
    • removeWindowFocusListener

      public void removeWindowFocusListener(WindowFocusListener  l)
      删除指定的窗口焦点监听,以便它不再接收来自该窗口的窗口事件。如果 l 为 null,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 窗口焦点监听器
      自从:
      1.4
      参见:
    • getWindowListeners

      public WindowListener [] getWindowListeners()
      返回在此窗口上注册的所有窗口监听的数组。
      返回:
      此窗口的所有 WindowListener s 或空数组(如果当前没有注册窗口监听器)
      自从:
      1.4
      参见:
    • getWindowFocusListeners

      public WindowFocusListener [] getWindowFocusListeners()
      返回在此窗口上注册的所有窗口焦点监听的数组。
      返回:
      此窗口的所有 WindowFocusListener s 或空数组(如果当前没有注册窗口焦点监听器)
      自从:
      1.4
      参见:
    • getWindowStateListeners

      public WindowStateListener [] getWindowStateListeners()
      返回在此窗口上注册的所有窗口状态监听的数组。
      返回:
      此窗口的所有 WindowStateListener s 或空数组(如果当前没有注册窗口状态监听器)
      自从:
      1.4
      参见:
    • getListeners

      public <T extends EventListener > T[] getListeners(Class <T> listenerType)
      返回当前在此 Window 上注册为 FooListener 的所有对象的数组。 FooListener 是使用 addFooListener 方法注册的。

      您可以使用类文字指定 listenerType 参数,例如 FooListener.class 。例如,您可以使用以下代码查询 Window w 的窗口监听器:

      WindowListener[] wls = (WindowListener[])(w.getListeners(WindowListener.class));
      如果不存在这样的监听器,则此方法返回一个空数组。
      重写:
      getListeners 在类 Container
      类型参数:
      T - 监听器的类型
      参数:
      listenerType - 请求的监听器类型;此参数应指定从 java.util.EventListener 派生的接口
      返回:
      在此窗口中注册为 FooListener 的所有对象的数组,如果没有添加此类监听器,则为空数组
      抛出:
      ClassCastException - 如果 listenerType 没有指定实现 java.util.EventListener 的类或接口
      NullPointerException - 如果 listenerTypenull
      自从:
      1.3
      参见:
    • processEvent

      protected void processEvent(AWTEvent  e)
      处理此窗口上的事件。如果事件是 WindowEvent ,它会调用 processWindowEvent 方法,否则它会调用其超类的 processEvent

      请注意,如果事件参数为 null,则行为未指定且可能导致异常。

      重写:
      processEvent 在类 Container
      参数:
      e - 事件
      参见:
    • processWindowEvent

      protected void processWindowEvent(WindowEvent  e)
      通过将事件调度到任何已注册的 WindowListener 对象来处理在此窗口上发生的窗口事件。注意:除非为此组件启用了窗口事件,否则不会调用此方法;当发生以下情况之一时,就会发生这种情况:
      • WindowListener 对象通过 addWindowListener 注册
      • 窗口事件通过enableEvents启用

      请注意,如果事件参数为 null,则行为未指定且可能导致异常。

      参数:
      e - 窗口事件
      参见:
    • processWindowFocusEvent

      protected void processWindowFocusEvent(WindowEvent  e)
      通过将发生在该窗口上的窗口焦点事件分派给任何已注册的 WindowFocusListener 对象来处理它们。注意:除非为此窗口启用窗口焦点事件,否则不会调用此方法。当发生以下情况之一时,就会发生这种情况:
      • WindowFocusListener 通过 addWindowFocusListener 注册
      • 窗口焦点事件通过enableEvents启用

      请注意,如果事件参数为 null,则行为未指定且可能导致异常。

      参数:
      e - 窗口焦点事件
      自从:
      1.4
      参见:
    • processWindowStateEvent

      protected void processWindowStateEvent(WindowEvent  e)
      通过将发生在该窗口上的窗口状态事件分派给任何已注册的 WindowStateListener 对象来处理它们。注意:除非为此窗口启用了窗口状态事件,否则不会调用此方法。当发生以下情况之一时,就会发生这种情况:
      • WindowStateListener 通过 addWindowStateListener 注册
      • 窗口状态事件通过enableEvents启用

      请注意,如果事件参数为 null,则行为未指定且可能导致异常。

      参数:
      e - 窗口状态事件
      自从:
      1.4
      参见:
    • setAlwaysOnTop

      public final void setAlwaysOnTop(boolean alwaysOnTop) throws SecurityException
      设置此窗口是否应始终位于其他窗口之上。如果有多个始终在最前面的窗口,则它们的相对顺序是未指定的并且依赖于平台。

      如果某个其他窗口已经始终位于最前面,则这些窗口之间的相对顺序未指定(取决于平台)。除了可能另一个永远在线的窗口之外,任何窗口都不能位于永远在线窗口之上。

      永远在最前面的窗口拥有的所有窗口都继承此状态并自动变为永远在最前面。如果一个窗口不再总是在最前面,它拥有的窗口将不再总是在最上面。当发送 toBack 永远在线窗口时,其永远在线状态设置为 false

      当在值为 true 的窗口上调用此方法时,该窗口可见并且平台支持此窗口始终在最前面,该窗口会立即向前移动,将其“粘贴”在最顶部的位置。如果窗口当前不可见,则此方法将始终在最前面的状态设置为 true 但不会使窗口向前移动。稍后显示窗口时,它将始终位于最前面。

      当在值为 false 的窗口上调用此方法时,总是在顶部状态设置为正常。它还可能导致顶层窗口的 z 顺序发生未指定的、平台相关的更改,但其他始终位于顶层的窗口将保持在最顶层的位置。在具有正常状态的窗口上使用值 false 调用此方法没有任何效果。

      笔记:某些平台可能不支持始终在最前面的窗口。要检测当前平台是否支持始终在最前面的窗口,请使用 Toolkit.isAlwaysOnTopSupported() isAlwaysOnTopSupported() 。如果此窗口不支持始终在最前面的模式或此窗口的工具包不支持始终在最前面的窗口,则调用此方法无效。

      如果安装了 SecurityManager,则调用线程必须被授予 AWTPermission“setWindowAlwaysOnTop”才能设置此属性的值。如果未授予此权限,此方法将抛出 SecurityException,并且属性的当前值将保持不变。

      参数:
      alwaysOnTop - 如果窗口应始终位于其他窗口之上则为真
      抛出:
      SecurityException - 如果调用线程没有权限设置 always-on-top 属性的值
      自从:
      1.5
      参见:
    • isAlwaysOnTopSupported

      public boolean isAlwaysOnTopSupported()
      返回此窗口是否支持永远在线模式。有些平台可能不支持永远在线的窗口,有些可能只支持某些类型的顶级窗口;例如,平台可能不支持始终在最前面的模式对话框。
      返回:
      true ,如果此窗口支持永远在线模式并且此窗口的工具包支持永远在线窗口,false 否则
      自从:
      1.6
      参见:
    • isAlwaysOnTop

      public final boolean isAlwaysOnTop()
      返回此窗口是否为始终在最前面的窗口。
      返回:
      true ,如果窗口始终处于顶层状态,false 否则
      自从:
      1.5
      参见:
    • getFocusOwner

      public Component  getFocusOwner()
      如果此 Window 获得焦点,则返回此 Window 的具有焦点的子 Component;否则返回 null。
      返回:
      具有焦点的子组件,如果此 Window 未获得焦点,则为 null
      参见:
    • getMostRecentFocusOwner

      public Component  getMostRecentFocusOwner()
      返回此 Window 的子 Component,当此 Window 获得焦点时,它将接收焦点。如果此窗口当前处于焦点状态,则此方法返回与 getFocusOwner() 相同的组件。如果此 Window 未获得焦点,则将返回最近请求焦点的子组件。如果没有子组件请求过焦点,并且这是一个可聚焦的窗口,则返回此窗口的初始可聚焦组件。如果没有子组件曾经请求过焦点,并且这是一个不可聚焦的窗口,则返回 null。
      返回:
      当此 Window 获得焦点时将获得焦点的子 Component
      自从:
      1.4
      参见:
    • isActive

      public boolean isActive()
      返回此窗口是否处于活动状态。只有框架或对话框可能处于活动状态。本机窗口系统可以用特殊装饰表示活动窗口或其子窗口,例如突出显示的标题栏。活动窗口始终是焦点窗口,或者是焦点窗口所有者的第一个框架或对话框。
      返回:
      这是否是活动窗口。
      自从:
      1.4
      参见:
    • isFocused

      public boolean isFocused()
      返回此 Window 是否获得焦点。如果存在焦点所有者,则焦点窗口是属于或包含该焦点所有者的窗口。如果没有焦点所有者,则没有焦点窗口。

      如果焦点窗口是框架或对话框,它也是活动窗口。否则,活动窗口是作为焦点窗口所有者的第一个框架或对话框。

      返回:
      这是否是焦点窗口。
      自从:
      1.4
      参见:
    • getFocusTraversalKeys

      public Set <AWTKeyStroke > getFocusTraversalKeys(int id)
      获取此 Window 的焦点遍历键。 (有关每个键的完整说明,请参阅 setFocusTraversalKeys。)

      如果没有为该窗口显式设置遍历键,则返回该窗口的父级遍历键。如果尚未为此 Window 的任何祖先显式设置遍历键,则返回当前 KeyboardFocusManager 的默认遍历键。

      重写:
      getFocusTraversalKeys 在类 Container
      参数:
      id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
      返回:
      指定键的 AWTKeyStroke
      抛出:
      IllegalArgumentException - 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
      自从:
      1.4
      参见:
    • setFocusCycleRoot

      public final void setFocusCycleRoot(boolean focusCycleRoot)
      什么也不做,因为 Windows 必须始终是焦点遍历循环的根。传入的值将被忽略。
      重写:
      setFocusCycleRoot 在类 Container
      参数:
      focusCycleRoot - 这个值被忽略
      自从:
      1.4
      参见:
    • isFocusCycleRoot

      public final boolean isFocusCycleRoot()
      始终返回 true,因为所有窗口都必须是焦点遍历循环的根。
      重写:
      isFocusCycleRoot 在类 Container
      返回:
      true
      自从:
      1.4
      参见:
    • getFocusCycleRootAncestor

      public final Container  getFocusCycleRootAncestor()
      总是返回 null 因为 Windows 没有祖先;它们代表组件层次结构的顶部。
      重写:
      getFocusCycleRootAncestor 在类 Component
      返回:
      null
      自从:
      1.4
      参见:
    • isFocusableWindow

      public final boolean isFocusableWindow()
      返回此 Window 是否可以成为焦点窗口,即此 Window 或其任何子组件是否可以成为焦点所有者。对于可聚焦的框架或对话框,其可聚焦窗口状态必须设置为 true 。对于不是 Frame 或 Dialog 的 Window 要获得焦点,其可获得焦点的 Window 状态必须设置为 true ,其最近拥有的 Frame 或 Dialog 必须显示在屏幕上,并且它必须在其焦点遍历循环中至少包含一个 Component .如果不满足这些条件中的任何一个,则此 Window 及其任何子组件都不能成为焦点所有者。
      返回:
      true 如果这个窗口可以成为焦点窗口; false否则
      自从:
      1.4
      参见:
    • getFocusableWindowState

      public boolean getFocusableWindowState()
      如果满足 isFocusableWindow 中列出的其他要求,则返回此 Window 是否可以成为焦点窗口。如果此方法返回 false,则 isFocusableWindow 也将返回 false。如果此方法返回 true ,则 isFocusableWindow 可能会返回 truefalse ,具体取决于必须满足的其他要求才能使 Window 成为焦点。

      默认情况下,所有 Windows 的可聚焦窗口状态都是 true

      返回:
      此 Window 是否可以成为焦点 Window
      自从:
      1.4
      参见:
    • setFocusableWindowState

      public void setFocusableWindowState(boolean focusableWindowState)
      设置如果此 Window 满足 isFocusableWindow 中概述的其他要求,它是否可以成为焦点窗口。如果此窗口的可聚焦窗口状态设置为 false ,则 isFocusableWindow 将返回 false 。如果此窗口的可聚焦窗口状态设置为 true,则 isFocusableWindow 可能会返回 truefalse,具体取决于必须满足的其他要求才能使窗口可聚焦。

      将窗口的可聚焦状态设置为 false 是应用程序向 AWT 标识将用作浮动调色板或工具栏的窗口的标准机制,因此应该是不可聚焦的窗口。在可见的 Window 上设置可聚焦状态可能会在某些平台上产生延迟效果 - 实际更改可能仅在 Window 隐藏然后再次可见时发生。为确保跨平台的行为一致,请在 Window 不可见时设置 Window 的可聚焦状态,然后显示它。

      参数:
      focusableWindowState - 此窗口是否可以成为焦点窗口
      自从:
      1.4
      参见:
    • setAutoRequestFocus

      public void setAutoRequestFocus(boolean autoRequestFocus)
      设置此窗口是否应在随后显示(通过调用 setVisible(true) )或移动到前面(通过调用 toFront() )获得焦点。

      请注意,setVisible(true) 可能会被间接调用(例如,当显示窗口的所有者时,会显示窗口)。 toFront() 也可以间接调用(例如,当 setVisible(true) 在已经可见的窗口上调用时)。在所有这些情况下,此属性也会生效。

      该属性的值不会被拥有的窗口继承。

      参数:
      autoRequestFocus - 此窗口是否应集中在随后显示或移动到前面
      自从:
      1.7
      参见:
    • isAutoRequestFocus

      public boolean isAutoRequestFocus()
      返回此窗口是否应在随后显示(通过调用 setVisible(true) )或移动到前面(通过调用 toFront() )获得焦点。

      默认情况下,窗口的 autoRequestFocus 值为 true

      返回:
      autoRequestFocus
      自从:
      1.7
      参见:
    • addPropertyChangeListener

      public void addPropertyChangeListener(PropertyChangeListener  listener)
      将 PropertyChangeListener 添加到监听列表。监听已为此类的所有绑定属性注册,包括以下内容:
      • 这个窗口的字体(“字体”)
      • 此窗口的背景颜色(“背景”)
      • 此窗口的前景色(“前景”)
      • 此窗口的可聚焦性(“可聚焦”)
      • 此窗口的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
      • 此窗口的一组 FORWARD_TRAVERSAL_KEYS(“forwardFocusTraversalKeys”)
      • 此窗口的一组 BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
      • 此窗口的一组 UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)
      • 此窗口的 DOWN_CYCLE_TRAVERSAL_KEYS 集合(“downCycleFocusTraversalKeys”)
      • 本窗口的焦点遍历策略(“focusTraversalPolicy”)
      • 此窗口的可聚焦窗口状态(“focusableWindowState”)
      • 此窗口的总在最上面状态(“alwaysOnTop”)
      请注意,如果此 Window 正在继承绑定属性,则不会触发任何事件来响应继承属性的更改。

      如果 listener 为 null,则不会抛出异常并且不会执行任何操作。

      重写:
      addPropertyChangeListener 在类 Container
      参数:
      listener - 要添加的 PropertyChangeListener
      参见:
    • addPropertyChangeListener

      public void addPropertyChangeListener(String  propertyName, PropertyChangeListener  listener)
      将 PropertyChangeListener 添加到特定属性的监听列表。指定的属性可以是用户定义的,也可以是以下之一:
      • 这个窗口的字体(“字体”)
      • 此窗口的背景颜色(“背景”)
      • 此窗口的前景色(“前景”)
      • 此窗口的可聚焦性(“可聚焦”)
      • 此窗口的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
      • 此窗口的一组 FORWARD_TRAVERSAL_KEYS(“forwardFocusTraversalKeys”)
      • 此窗口的一组 BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
      • 此窗口的一组 UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)
      • 此窗口的 DOWN_CYCLE_TRAVERSAL_KEYS 集合(“downCycleFocusTraversalKeys”)
      • 本窗口的焦点遍历策略(“focusTraversalPolicy”)
      • 此窗口的可聚焦窗口状态(“focusableWindowState”)
      • 此窗口的总在最上面状态(“alwaysOnTop”)
      请注意,如果此 Window 正在继承绑定属性,则不会触发任何事件来响应继承属性的更改。

      如果 listener 为 null,则不会抛出异常并且不会执行任何操作。

      重写:
      addPropertyChangeListener 在类 Container
      参数:
      propertyName - 上面列出的属性名称之一
      listener - 要添加的 PropertyChangeListener
      参见:
    • isValidateRoot

      public boolean isValidateRoot()
      指示此容器是否为验证根。

      Window 对象是验证根,因此,它们覆盖此方法以返回 true

      重写:
      isValidateRoot 在类 Container
      返回:
      true
      自从:
      1.7
      参见:
    • postEvent

      @Deprecated public boolean postEvent(Event  e)
      已弃用。
      从 JDK 1.1 版开始,由 dispatchEvent(AWTEvent) 取代。
      从接口 MenuContainer 复制的描述
      向监听发布事件。
      指定者:
      postEvent 在接口 MenuContainer
      重写:
      postEvent 在类 Component
      参数:
      e - 要派发的事件
      返回:
      发布事件的结果
    • isShowing

      public boolean isShowing()
      检查此窗口是否显示在屏幕上。
      重写:
      isShowing 在类 Component
      返回:
      true 如果显示组件,false 否则
      参见:
    • applyResourceBundle

      @Deprecated public void applyResourceBundle(ResourceBundle  rb)
      已弃用。
      从 J2SE 1.4 开始,由 Component.applyComponentOrientation 取代。
      参数:
      rb - 资源包
    • applyResourceBundle

      @Deprecated public void applyResourceBundle(String  rbName)
      已弃用。
      从 J2SE 1.4 开始,由 Component.applyComponentOrientation 取代。
      参数:
      rbName - 资源名称
    • setType

      public void setType(Window.Type  type)
      设置窗口的类型。此方法只能在窗口不可显示时调用。
      参数:
      type - 窗口类型
      抛出:
      IllegalComponentStateException - 如果窗口是可显示的。
      IllegalArgumentException - 如果类型是 null
      自从:
      1.7
      参见:
    • getType

      public Window.Type  getType()
      返回窗口的类型。
      返回:
      窗口的类型
      自从:
      1.7
      参见:
    • getAccessibleContext

      public AccessibleContext  getAccessibleContext()
      获取与此 Window 关联的 AccessibleContext。对于 Windows,AccessibleContext 采用 AccessibleAWTWindow 的形式。如有必要,将创建一个新的 AccessibleAWTWindow 实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      重写:
      getAccessibleContext 在类 Component
      返回:
      作为此窗口的 AccessibleContext 的 AccessibleAWTWindow
      自从:
      1.3
    • setLocationRelativeTo

      public void setLocationRelativeTo(Component  c)
      根据以下场景设置窗口相对于指定组件的位置。

      下面提到的目标屏幕是调用setLocationRelativeTo方法后窗口应该放置到的屏幕。

      • 如果组件是 null ,或者与该组件关联的 GraphicsConfigurationnull ,则窗口位于屏幕中央。可以通过GraphicsEnvironment.getCenterPoint 方法获取中心点。
      • 如果该组件不是 null ,但它当前未显示,则窗口将放置在与该组件关联的 GraphicsConfiguration 定义的目标屏幕的中心。
      • 如果组件不是 null 并且显示在屏幕上,则窗口的位置使窗口的中心与组件的中心重合。

      如果屏幕配置不允许窗口从一个屏幕移动到另一个屏幕,则窗口仅放置在根据上述条件确定的位置并且其GraphicsConfiguration 不会更改。

      笔记:如果窗口的下边缘超出屏幕,则窗口被放置在最靠近屏幕中心的Component一侧。因此,如果组件位于屏幕右侧,则窗口位于其左侧,反之亦然。

      如果在计算窗口位置后,窗口的上边缘、左边缘或右边缘在屏幕之外,则窗口的定位方式是窗口的上边缘、左边缘或右边缘与屏幕重合屏幕的相应边缘。如果窗口的左边缘和右边缘都在屏幕之外,则窗口位于屏幕的左侧。如果顶部和底部边缘都在屏幕之外,则会发生类似的放置。在这种情况下,窗口位于屏幕的顶部。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      参数:
      c - 确定窗口位置所依据的组件
      自从:
      1.4
      参见:
    • createBufferStrategy

      public void createBufferStrategy(int numBuffers)
      为该组件创建一个新的多缓冲策略。多缓冲对于渲染性能很有用。此方法尝试根据提供的缓冲区数量创建可用的最佳策略。它将始终创建一个具有该数量缓冲区的BufferStrategy。首先尝试翻页策略,然后尝试使用加速缓冲区的 blitting 策略。最后,使用未加速的块传输策略。

      每次调用此方法时,都会丢弃此组件的现有缓冲策略。

      参数:
      numBuffers - 要创建的缓冲区数
      抛出:
      IllegalArgumentException - 如果 numBuffers 小于 1。
      IllegalStateException - 如果组件不可显示
      自从:
      1.4
      参见:
    • createBufferStrategy

      public void createBufferStrategy(int numBuffers, BufferCapabilities  caps) throws AWTException
      为具有所需缓冲功能的组件创建新的多缓冲策略。这很有用,例如,如果只需要加速内存或翻页(由缓冲区功能指定)。

      每次调用此方法时,都会丢弃此组件的现有缓冲策略。

      参数:
      numBuffers - 要创建的缓冲区数,包括前端缓冲区
      caps - 创建缓冲策略所需的功能;不能是null
      抛出:
      AWTException - 如果无法支持或满足所提供的功能;这可能会发生,例如,如果当前可用的加速内存不足,或者如果指定了页面翻转但不可能。
      IllegalArgumentException - 如果 numBuffers 小于 1,或者如果 caps 是 null
      自从:
      1.4
      参见:
    • getBufferStrategy

      public BufferStrategy  getBufferStrategy()
      返回此组件使用的 BufferStrategy。如果尚未创建或已处置 BufferStrategy,则此方法将返回 null。
      返回:
      该组件使用的缓冲策略
      自从:
      1.4
      参见:
    • setLocationByPlatform

      public void setLocationByPlatform(boolean locationByPlatform)
      设置此 Window 是否应出现在本机窗口系统的默认位置或当前位置(由 getLocation 返回),下次 Window 可见时。此行为类似于在未以编程方式设置其位置的情况下显示的本机窗口。如果没有明确设置窗口的位置,大多数窗口系统都会级联窗口。一旦窗口显示在屏幕上,就会确定实际位置。

      也可以通过将系统属性“java.awt.Window.locationByPlatform”设置为“true”来启用此行为,但优先调用此方法。

      在调用 setLocationByPlatform 后调用 setVisiblesetLocationsetBounds 清除窗口的这个属性。

      例如,执行以下代码后:

       setLocationByPlatform(true);
       setVisible(true);
       boolean flag = isLocationByPlatform();
       
      窗口将显示在平台的默认位置,flag 将是 false

      在以下示例中:

       setLocationByPlatform(true);
       setLocation(10, 10);
       boolean flag = isLocationByPlatform();
       setVisible(true);
       
      窗口将显示在 (10, 10) 处,flag 将显示为 false
      参数:
      locationByPlatform - true 如果此窗口应出现在默认位置,false 如果在当前位置
      抛出:
      IllegalComponentStateException - 如果窗口显示在屏幕上并且 locationByPlatform 是 true
      自从:
      1.5
      参见:
    • isLocationByPlatform

      public boolean isLocationByPlatform()
      如果下次此窗口可见时此窗口将出现在本机窗口系统的默认位置,则返回 true。如果窗口显示在屏幕上,此方法总是返回 false
      返回:
      此窗口是否会出现在默认位置
      自从:
      1.5
      参见:
    • setBounds

      public void setBounds(int x, int y, int width, int height)
      移动此组件并调整其大小。左上角的新位置由 xy 指定,新大小由 widthheight 指定。

      此方法更改与布局相关的信息,因此使组件层次结构无效。

      如果 widthheight 值小于先前调用 setMinimumSize 指定的最小大小,则会自动放大。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      重写:
      setBounds 在类 Component
      参数:
      x - 新的x- 该组件的坐标
      y - 新的y- 该组件的坐标
      width - 该组件的新 width
      height - 该组件的新 height
      自从:
      1.6
      参见:
    • setBounds

      public void setBounds(Rectangle  r)
      移动此组件并调整其大小以符合新的边界矩形 r 。该组件的新位置由 r.xr.y 指定,其新大小由 r.widthr.height 指定

      此方法更改与布局相关的信息,因此使组件层次结构无效。

      如果 r.widthr.height 值小于先前调用 setMinimumSize 指定的最小大小,则值将自动放大。

      该方法更改几何相关数据。因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便 Window 对象的放置和大小与桌面设置密切相关。

      重写:
      setBounds 在类 Component
      参数:
      r - 该组件的新边界矩形
      自从:
      1.6
      参见:
    • getOpacity

      public float getOpacity()
      返回窗口的不透明度。
      返回:
      窗口的不透明度
      自从:
      1.7
      参见:
    • setOpacity

      public void setOpacity(float opacity)
      设置窗口的不透明度。

      不透明度值在 [0..1] 范围内。请注意,将不透明度级别设置为 0 可能会也可能不会禁用此窗口上的鼠标事件处理。这是一种依赖于平台的行为。

      必须满足以下条件才能将不透明度值设置为小于 1.0f

      如果请求的不透明度值小于 1.0f ,并且不满足上述任何条件,则窗口不透明度不会改变,并抛出 IllegalComponentStateException

      单个像素的半透明度级别也可能受其颜色的 alpha 组件(参见 setBackground(Color) )和此窗口的当前形状(参见 setShape(Shape) )的影响。

      参数:
      opacity - 设置为窗口的不透明度级别
      抛出:
      IllegalArgumentException - 如果不透明度超出范围 [0..1]
      IllegalComponentStateException - 如果窗口经过装饰且不透明度小于 1.0f
      IllegalComponentStateException - 如果窗口处于全屏模式,并且不透明度小于 1.0f
      UnsupportedOperationException - 如果不支持 GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT 半透明且不透明度小于 1.0f
      自从:
      1.7
      参见:
    • getShape

      public Shape  getShape()
      返回窗口的形状。此方法返回的值可能与之前使用 setShape(shape) 设置的值不同,但保证表示相同的形状。
      返回:
      窗口的形状或 null 如果没有为窗口指定形状
      自从:
      1.7
      参见:
    • setShape

      public void setShape(Shape  shape)
      设置窗口的形状。

      设置形状会切断窗口的某些部分。只有属于给定 Shape 的部分保持可见和可点击。如果 shape 参数为 null ,此方法将恢复默认形状,使窗口在大多数平台上为矩形。

      必须满足以下条件才能设置非空形状:

      如果请求的形状不是 null ,并且不满足上述任何条件,则此窗口的形状不会改变,并且将抛出 UnsupportedOperationException IllegalComponentStateException

      单个像素的半透明度级别也可能受其颜色的 alpha 组件(参见 setBackground(Color) )和不透明度值(参见 setOpacity(float) )的影响。有关详细信息,请参阅 GraphicsDevice.WindowTranslucency

      参数:
      shape - 设置为窗口的形状
      抛出:
      IllegalComponentStateException - 如果形状不是 null 并且窗户是装饰的
      IllegalComponentStateException - 如果形状不是 null 并且窗口处于全屏模式
      UnsupportedOperationException - 如果形状不是 nullPERPIXEL_TRANSPARENT 不支持半透明
      自从:
      1.7
      参见:
    • getBackground

      public Color  getBackground()
      获取此窗口的背景颜色。

      请注意,返回颜色的 alpha 组件指示窗口是否处于非不透明(每像素半透明)模式。

      重写:
      getBackground 在类 Component
      返回:
      该组件的背景色
      参见:
    • setBackground

      public void setBackground(Color  bgColor)
      设置此窗口的背景颜色。

      如果窗口系统支持 PERPIXEL_TRANSLUCENT 半透明,则给定背景颜色的 alpha 组件可能会影响此窗口的操作模式:它指示此窗口是否必须是不透明的(alpha 等于 1.0f )或每像素半透明(alpha 小于1.0f)。如果给定的背景颜色是 null ,窗口被认为是完全不透明的。

      必须满足以下所有条件才能为此窗口启用逐像素透明模式:

      如果请求的背景色的 alpha 组件小于 1.0f ,并且不满足上述任何条件,则此窗口的背景色不会改变,给定背景色的 alpha 组件不会影响操作模式这个窗口,并且 UnsupportedOperationException IllegalComponentStateException 将被抛出。

      当窗口是逐像素半透明时,绘图子系统会考虑每个单独像素的 alpha 值。如果像素的 alpha 颜色组件为零,则它在视觉上变得透明。如果像素的 alpha 等于 1.0f,则该像素是完全不透明的。 alpha 颜色组件的中间值使像素半透明。在这种模式下,窗口的背景被绘制为给定背景颜色的 alpha 值。如果此方法的参数的 alpha 值等于 0 ,则根本不绘制背景。

      给定像素的实际半透明度水平还取决于窗口不透明度(参见 setOpacity(float) ),以及该窗口的当前形状(参见 setShape(Shape) )。

      请注意,使用 0 的 alpha 值绘制像素可能会也可能不会禁用此像素上的鼠标事件处理。这是一种依赖于平台的行为。为了确保鼠标事件不会被分派到特定像素,该像素必须从窗口的形状中排除。

      由于本机平台要求,启用逐像素半透明模式可能会更改此窗口的图形配置。

      重写:
      setBackground 在类 Component
      参数:
      bgColor - 成为此窗口背景色的颜色。
      抛出:
      IllegalComponentStateException - 如果给定背景颜色的 alpha 值小于 1.0f 并且窗口被装饰
      IllegalComponentStateException - 如果给定背景颜色的 alpha 值小于 1.0f 并且窗口处于全屏模式
      UnsupportedOperationException - 如果给定背景颜色的 alpha 值小于 1.0f 并且不支持 PERPIXEL_TRANSLUCENT 半透明
      参见:
    • isOpaque

      public boolean isOpaque()
      指示窗口当前是否不透明。

      如果窗口的背景颜色不是 null 并且该颜色的 alpha 组件小于 1.0f,则该方法返回 false。否则该方法返回 true

      重写:
      isOpaque 在类 Component
      返回:
      true 如果窗口是不透明的,false 否则
      自从:
      1.7
      参见:
    • paint

      public void paint(Graphics  g)
      绘制容器。这会将绘制转发到作为此容器子项的任何轻量级组件。如果重新实现此方法,则应调用 super.paint(g) 以便正确渲染轻量级组件。如果子组件完全被 g 中的当前裁剪设置裁剪,则不会将 paint() 转发给该子组件。
      重写:
      paint 在类 Container
      参数:
      g - 指定的图形窗口
      自从:
      1.7
      参见: