AIR 提供几种方法来直接更改窗口的显示顺序。可以将窗口的显示顺序向前或向后移动;可以将窗口移动到其他窗口的前面或后面。同时,用户可以通过激活窗口来对窗口进行重新排序。
可以通过将窗口的
alwaysInFront
属性设置为
true
来使该窗口位于其他窗口的前面。如果多个窗口都具有此设置,则这些窗口的显示顺序是它们相互之间的排序顺序,而且它们始终排序在
alwaysInFront
设置为 false 的窗口前面。
即使 AIR 应用程序未处于活动状态,最上面组中的窗口也显示在其他应用程序中窗口的前面。由于此行为会阻碍用户查看其他窗口,因此应仅在必要和适当时才能将
alwaysInFront
设置为
true
。经调整的使用示例包括:
注:
AIR 不强制要求
alwaysInFront
属性的正确使用。但是,如果应用程序打断了用户的工作流,则可能将其传递到同一用户的垃圾桶。
如果窗口拥有其他窗口,则这些窗口始终按顺序显示在该窗口前面。如果对拥有其他窗口的某个窗口调用
orderToFront()
,或者在该窗口上将
alwaysInFront
设置为
true
,则所有者窗口将显示在其他窗口前面,该窗口所拥有的窗口随该窗口一起重新排序,且所拥有的窗口仍显示在所有者的前面。
在同一窗口所拥有的窗口中,对拥有的窗口调用窗口顺序方法可正常工作,但同时会更改整个拥有的窗口组相对于该组之外的其他窗口的排序顺序。例如,如果对某个拥有的窗口调用
orderToFront()
,则该窗口、其所有者以及同一所有者所拥有的所有其他窗口都将移动到窗口显示列表的前面。
NativeWindow 类提供以下属性和方法来设置一个窗口相对于其他窗口的显示顺序:
成员
|
说明
|
alwaysInFront 属性
|
指定窗口是否显示在最上面的窗口组中。
几乎在所有情况下,
false
都是最佳设置。将值从
false
更改为
true
会将窗口置于所有其他窗口的前面(但不会激活该窗口)。将值从
true
更改为
false
会将窗口的顺序排在最上面组中其余窗口的后面,但仍位于其他窗口的前面。将窗口的该属性设置为其当前值不会更改窗口显示顺序。
alwaysInFront
设置对其他窗口所拥有的窗口没有任何影响。
|
orderToFront()
|
将窗口置于前面。
|
orderInFrontOf()
|
将窗口置于紧靠特定窗口前面。
|
orderToBack()
|
将窗口发送到其他窗口后面。
|
orderBehind()
|
将窗口发送到紧靠特定窗口后面。
|
activate()
|
将窗口置于前面(同时使该窗口可见并分配焦点)。
|
注:
如果窗口处于隐藏(
visible
为
false
)或最小化状态,则调用显示顺序方法无效。
在 Linux 操作系统中,不同的窗口管理器对于窗口显示顺序实施不同的规则: