|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Component java.awt.Container java.awt.Window
public class Window
Window
物件是一個沒有邊界和選單欄的頂層視窗。視窗的預設佈局是 BorderLayout
。
建構視窗時,它必須擁有窗體、對話框或其他作為其所有者定義的視窗。
在多螢幕環境中,通過使用 Window(Window, GraphicsConfiguration)
建構 Window
,可以在不同的螢幕設備上創建 Window
。GraphicsConfiguration
物件是目標螢幕設備的 GraphicsConfiguration
物件之一。
在虛擬設備多螢幕環境中(其中桌面區域可以跨越多物理螢幕設備),所有配置的邊界都是相對於虛擬設備坐標系的。虛擬坐標系的原點位於主物理螢幕的左上角。是否使用負坐標取決於主物理螢幕在虛擬設備中的位置,如下圖所示。
在此環境中,調用 setLocation
時,必須傳遞一個虛擬坐標到此方法中。類似地,對 Frame
調用 getLocationOnScreen
將返回虛擬設備坐標。調用 GraphicsConfiguration
的 getBounds
方法,以尋找它在虛擬坐標系中的原點。
以下程式碼將 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);
註:頂層視窗(包括 Window
、Frame
和 Dialog
)的位置和大小受桌面視窗管理系統的控制。對 setLocation
、setSize
和 setBounds
的調用是轉發到視窗管理系統的請求(不是指令)。將盡所有努力回應這樣的請求。但是,在某些情況下,視窗管理系統可以忽略這樣的請求,或修改請求的幾何結構,以放置和調整 Window
的大小,使之更好地與桌面設置比對。
由於本機事件處理的非同步特性,在處理完最後一個請求前,getBounds
、getLocation
、getLocationOnScreen
和 getSize
返回的結果可能不反映螢幕上視窗的實際幾何結構。在處理後續請求的過程中,視窗管理系統滿足這些請求時,這些值可能會相應地改變。
應用程序可以隨意設置不可見 Window
的大小和位置,但是當 Window
可見時,視窗管理系統可以隨後更改它的大小和/或位置。將產生一個或多個 ComponentEvent
來表示新的幾何結構。
視窗能夠產生以下 WindowEvents:WindowOpened、WindowClosed、indowGainedFocus、indowLostFocus。
WindowEvent
,
addWindowListener(java.awt.event.WindowListener)
,
BorderLayout
,
序列化表格巢狀類別摘要 | |
---|---|
protected class |
Window.AccessibleAWTWindow
此類別實作對 Window 類別的可存取性支持。 |
從類別 java.awt.Container 繼承的巢狀類別/介面 |
---|
Container.AccessibleAWTContainer |
從類別 java.awt.Component 繼承的巢狀類別/介面 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
欄位摘要 |
---|
從類別 java.awt.Component 繼承的欄位 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
從介面 java.awt.image.ImageObserver 繼承的欄位 |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
建構子摘要 | |
---|---|
Window(Frame owner)
建構一個新的、最初不可見的視窗,使用指定的 Frame 作為其所有者。 |
|
Window(Window owner)
建構一個新的、最初不可見的視窗,使用指定 Window 作為其所有者。 |
|
Window(Window owner,
GraphicsConfiguration gc)
建構一個新的、最初不可見的視窗,使用指定的所有者 Window 和螢幕設備的 GraphicsConfiguration 。 |
方法摘要 | ||
---|---|---|
void |
addNotify()
通過創建到本機螢幕資源的連接,使此視窗變得可顯示。 |
|
void |
addPropertyChangeListener(PropertyChangeListener listener)
將 PropertyChangeListener 添加到偵聽器列表。 |
|
void |
addPropertyChangeListener(String propertyName,
PropertyChangeListener listener)
將 PropertyChangeListener 添加到某個特定屬性的偵聽器列表。 |
|
void |
addWindowFocusListener(WindowFocusListener l)
添加指定的視窗焦點偵聽器,以從此視窗接收視窗事件。 |
|
void |
addWindowListener(WindowListener l)
添加指定的視窗偵聽器,以從此視窗接收視窗事件。 |
|
void |
addWindowStateListener(WindowStateListener l)
添加指定的視窗狀態偵聽器,以從此視窗接收視窗事件。 |
|
void |
applyResourceBundle(ResourceBundle rb)
已過時。 從 J2SE 1.4 開始,由 Component.applyComponentOrientation 取代。 |
|
void |
applyResourceBundle(String rbName)
已過時。 從 J2SE 1.4 開始,由 Component.applyComponentOrientation 取代。 |
|
void |
createBufferStrategy(int numBuffers)
為此元件上的多緩衝創建一個新策略。 |
|
void |
createBufferStrategy(int numBuffers,
BufferCapabilities caps)
根據所需緩衝區能力為此元件上的多緩衝創建新策略。 |
|
void |
dispose()
釋放由此 Window 、其子元件及其擁有的所有子元件所使用的所有本機螢幕資源。 |
|
AccessibleContext |
getAccessibleContext()
獲取與此視窗關聯的 AccessibleContext。 |
|
BufferStrategy |
getBufferStrategy()
返回此元件使用的 BufferStrategy 。 |
|
boolean |
getFocusableWindowState()
返回如果此視窗滿足 isFocusableWindow 中列出的其他要求,其是否可以成為焦點視窗。 |
|
Container |
getFocusCycleRootAncestor()
始終返回 null ,因為視窗沒有祖先;它們表示元件層次結構的頂層。 |
|
Component |
getFocusOwner()
如果此視窗為焦點視窗,則返回是焦點視窗的子元件;否則返回 null。 |
|
Set<AWTKeyStroke> |
getFocusTraversalKeys(int id)
獲取此視窗的焦點遍歷鍵。 |
|
GraphicsConfiguration |
getGraphicsConfiguration()
此方法返回由此視窗使用的 GraphicsConfiguration。 |
|
List<Image> |
getIconImages()
返回要作為此視窗的圖標顯示的圖像序列。 |
|
InputContext |
getInputContext()
獲取此視窗的輸入上下文。 |
|
|
getListeners(Class<T> listenerType)
返回當前在此 Window 上註冊為 FooListener 的所有物件所組成的陣列。 |
|
Locale |
getLocale()
如果設置了區域,則獲取與此視窗關聯的 Locale 物件。 |
|
Dialog.ModalExclusionType |
getModalExclusionType()
返回此視窗的網要排斥型別。 |
|
Component |
getMostRecentFocusOwner()
返回此視窗的子元件,該子元件在此視窗為焦點視窗時將接收焦點。 |
|
Window[] |
getOwnedWindows()
返回包含此視窗當前擁有的所有視窗的陣列。 |
|
Window |
getOwner()
返回此視窗的所有者。 |
|
static Window[] |
getOwnerlessWindows()
返回一個陣列,該陣列由此應用程序創建的所有沒有所有者的 Window 組成。 |
|
Toolkit |
getToolkit()
返回此窗體的工具套件。 |
|
String |
getWarningString()
獲取此視窗中顯示的警告字元串。 |
|
WindowFocusListener[] |
getWindowFocusListeners()
返回在此視窗註冊的所有視窗焦點偵聽器所組成的陣列。 |
|
WindowListener[] |
getWindowListeners()
返回在此視窗註冊的所有視窗偵聽器所組成的陣列。 |
|
static Window[] |
getWindows()
返回一個陣列,該陣列由此應用程序創建的所有 Window (包括被擁有的和不被擁有的)組成。 |
|
WindowStateListener[] |
getWindowStateListeners()
返回在此視窗註冊的所有視窗狀態偵聽器所組成的陣列。 |
|
void |
hide()
已過時。 從 JDK 1.5 版開始,由 Component.setVisible(boolean) 取代。 |
|
boolean |
isActive()
返回此視窗是否為活動視窗。 |
|
boolean |
isAlwaysOnTop()
返回此視窗是否為 always-on-top 視窗。 |
|
boolean |
isAlwaysOnTopSupported()
返回此視窗是否支持 always-on-top 網要。 |
|
boolean |
isFocusableWindow()
返回此視窗是否可以成為焦點視窗,也就是說,此視窗或其任何子元件是否可以成為焦點所有者。 |
|
boolean |
isFocusCycleRoot()
始終返回 true ,因為所有視窗必須是焦點遍歷循環的根。 |
|
boolean |
isFocused()
返回此視窗是否為焦點視窗。 |
|
boolean |
isLocationByPlatform()
如果此視窗下次可見時,出現在本機視窗作業系統的預設位置,則返回 true 。 |
|
boolean |
isShowing()
檢查此視窗是否顯示在螢幕上。 |
|
void |
pack()
調整此視窗的大小,以適合其子元件的首選大小和佈局。 |
|
boolean |
postEvent(Event e)
已過時。 從 JDK version 1.1 開始,由 dispatchEvent(AWTEvent) 取代。 |
|
protected void |
processEvent(AWTEvent e)
處理此視窗上的事件。 |
|
protected void |
processWindowEvent(WindowEvent e)
處理此視窗上發生的視窗事件:將它們指派到任何註冊的 WindowListener 物件。 |
|
protected void |
processWindowFocusEvent(WindowEvent e)
處理此視窗上發生的視窗焦點事件:將它們指派到任何註冊的 WindowFocusListener 物件。 |
|
protected void |
processWindowStateEvent(WindowEvent e)
處理此視窗上發生的視窗狀態事件:將它們指派到任何註冊的 WindowStateListener 物件。 |
|
void |
removeNotify()
通過移除此 Container 到其本機螢幕資源的連接,使其不可顯示。 |
|
void |
removeWindowFocusListener(WindowFocusListener l)
移除指定的視窗焦點偵聽器,以便不再從此視窗接收視窗事件。 |
|
void |
removeWindowListener(WindowListener l)
移除指定的視窗偵聽器,以便不再從此視窗接收視窗事件。 |
|
void |
removeWindowStateListener(WindowStateListener l)
移除指定的視窗狀態偵聽器,以便不再從此視窗接收視窗事件。 |
|
void |
reshape(int x,
int y,
int width,
int height)
已過時。 從 JDK 1.1 版開始,由 setBounds(int, int, int, int) 取代。 |
|
void |
setAlwaysOnTop(boolean alwaysOnTop)
設置此視窗是否應該始終位於其他視窗上方。 |
|
void |
setBounds(int x,
int y,
int width,
int height)
移動元件並調整其大小。 |
|
void |
setBounds(Rectangle r)
移動元件並調整其大小,使其符合新的有界矩形 r 。 |
|
void |
setCursor(Cursor cursor)
設置指定鼠標的鼠標圖像。 |
|
void |
setFocusableWindowState(boolean focusableWindowState)
設置如果此視窗滿足 isFocusableWindow 中列出的其他要求,其是否可以成為焦點視窗。 |
|
void |
setFocusCycleRoot(boolean focusCycleRoot)
不執行任何操作,因為視窗必須始終是焦點遍歷循環的根。 |
|
void |
setIconImage(Image image)
設置要作為此視窗圖標顯示的圖像。 |
|
void |
setIconImages(List<? extends Image> icons)
設置要作為此視窗的圖標顯示的圖像序列。 |
|
void |
setLocationByPlatform(boolean locationByPlatform)
設置視窗下次可見時應該出現的位置:本機視窗系統的預設位置,還是當前位置(由 getLocation 返回)。 |
|
void |
setLocationRelativeTo(Component c)
設置視窗相對於指定元件的位置。 |
|
void |
setMinimumSize(Dimension minimumSize)
將此視窗的最小大小設置為一個常數值。 |
|
void |
setModalExclusionType(Dialog.ModalExclusionType exclusionType)
指定此視窗的網要排斥型別。 |
|
void |
setSize(Dimension d)
調整元件的大小,使其寬度為 d.width ,高度為 d.height 。 |
|
void |
setSize(int width,
int height)
調整元件的大小,使其寬度為 width ,高度為 height 。 |
|
void |
setVisible(boolean b)
根據參數 b 的值顯示或隱藏此 Window 。 |
|
void |
show()
已過時。 從 JDK 1.5 版開始,由 Component.setVisible(boolean) 取代。 |
|
void |
toBack()
如果此視窗是可視的,則將此視窗置於後方,如果它是焦點視窗或活動視窗,則會導致丟失焦點或活動狀態。 |
|
void |
toFront()
如果此視窗是可見的,則將此視窗置於前端,並可以將其設為焦點 Window。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
建構子詳細資訊 |
---|
public Window(Frame owner)
Frame
作為其所有者。該視窗將不可聚焦,除非其所有者正顯示在螢幕上。
如果存在安全管理器,則此方法首先調用安全管理器的 checkTopLevelWindow
方法(this
作為其參數),以確定是否必須使用警告標誌顯示該視窗。
owner
- 要充當所有者的 Frame
;如果此視窗沒有所有者,則該參數為 null
IllegalArgumentException
- 如果 owner
的 GraphicsConfiguration
不是來自螢幕設備
HeadlessException
- 當 GraphicsEnvironment.isHeadless
返回 true
時GraphicsEnvironment.isHeadless()
,
SecurityManager.checkTopLevelWindow(java.lang.Object)
,
isShowing()
public Window(Window owner)
Window
作為其所有者。此視窗將不可聚焦,除非其最近擁有的 Frame
或 Dialog
正顯示在螢幕上。
如果存在安全管理器,則此方法首先調用安全管理器的 checkTopLevelWindow
方法(this
作為其參數),以確定是否必須使用警告標誌顯示該視窗。
owner
- 要充當所有者的 Window
;如果此視窗沒有所有者,則該參數為 null
IllegalArgumentException
- 如果 owner
的 GraphicsConfiguration
不是來自螢幕設備
HeadlessException
- 當 GraphicsEnvironment.isHeadless
返回 true
時GraphicsEnvironment.isHeadless()
,
SecurityManager.checkTopLevelWindow(java.lang.Object)
,
isShowing()
public Window(Window owner, GraphicsConfiguration gc)
Window
和螢幕設備的 GraphicsConfiguration
。該視窗將不可聚焦,除非其最近擁有的 Frame
或 Dialog
正顯示在螢幕上。
如果存在安全管理器,則此方法首先調用安全管理器的 checkTopLevelWindow
方法(this
作為其參數),以確定是否必須使用警告標誌顯示該視窗。
owner
- 要作為所有者的視窗;如果此視窗沒有所有者,則該參數為 null
gc
- 目標螢幕設備的 GraphicsConfiguration
;如果 gc
為 null
,則使用系統預設的 GraphicsConfiguration
IllegalArgumentException
- 如果 gc
不是來自螢幕設備
HeadlessException
- 當 GraphicsEnvironment.isHeadless()
返回 true
時GraphicsEnvironment.isHeadless()
,
SecurityManager.checkTopLevelWindow(java.lang.Object)
,
GraphicsConfiguration.getBounds()
,
isShowing()
方法詳細資訊 |
---|
public List<Image> getIconImages()
此方法返回內部存儲列表的一個副本,所以對返回物件的任何操作都不會影響視窗的行為。
setIconImages(java.util.List extends java.awt.Image>)
,
setIconImage(Image)
public void setIconImages(List<? extends Image> icons)
getIconImages
將總是返回 icons
列表的一個副本。
各平臺根據自身能力的不同,使用不同數量和尺寸的圖像作為視窗的圖標。
一開始便掃瞄 icons
列表,尋找最佳尺寸的圖像。如果列表包含幾個大小相同的圖像,則使用第一個圖像。
未指定圖標的、沒有所有者的視窗將使用平臺預設的圖標。如果沒有顯示覆寫,被擁有的視窗的圖標可以從其所有者繼承。將圖標設置為 null
或空列表將恢復預設行為。
註:根據上下文的不同(例如,視窗裝飾、視窗列表、任務欄等),本機視窗系統可以使用不同尺寸的不同圖像表示一個視窗。也可以對所有上下文使用一個圖像,或者根本不用圖像。
icons
- 要顯示的圖標圖像列表。getIconImages()
,
setIconImage(Image)
public void setIconImage(Image image)
將單個圖像指定為視窗的圖標時,可以使用此方法代替 setIconImages()
。
以下語句:
setIconImage(image);等價於:
ArrayListimageList = new ArrayList (); imageList.add(image); setIconImages(imageList);
註:根據上下文的不同(例如,視窗裝飾、視窗列表、任務欄等),本機視窗系統可以使用不同尺寸的不同圖像表示一個視窗。也可以對所有上下文使用一個圖像,或者根本不用圖像。
image
- 要顯示的圖標圖像。setIconImages(java.util.List extends java.awt.Image>)
,
getIconImages()
public void addNotify()
Container
中的 addNotify
Component.isDisplayable()
,
Container.removeNotify()
public void removeNotify()
Container
中的 removeNotify
Component.isDisplayable()
,
Container.addNotify()
public void pack()
Component.isDisplayable()
public void setMinimumSize(Dimension minimumSize)
getMinimumSize
將總是返回此值。如果當前視窗的大小小於 minimumSize
,則視窗的大小將自動增大到最小大小。
如果隨後調用 setSize
或 setBounds
方法,且調用時使用的寬度或高度小於 setMinimumSize
指定的寬度或高度,則視窗將自動增大到 minimumSize
值。將最小大小設置為 null
將還原預設行為。
如果使用者試圖將視窗大小調整到 minimumSize
值以下,則該調整操作將受到限制。
此行為與平臺有關。
Component
中的 setMinimumSize
minimumSize
- 此視窗新的最小大小Component.setMinimumSize(java.awt.Dimension)
,
Container.getMinimumSize()
,
Component.isMinimumSizeSet()
,
setSize(Dimension)
public void setSize(Dimension d)
d.width
,高度為 d.height
。
如果 d.width
值或 d.height
值小於之前調用 setMinimumSize
指定的最小大小,則它將自動增大。
Component
中的 setSize
d
- 指定元件新大小的尺寸Component.getSize()
,
setBounds(int, int, int, int)
,
setMinimumSize(java.awt.Dimension)
public void setSize(int width, int height)
width
,高度為 height
。
如果 width
值或 height
值小於之前調用 setMinimumSize
指定的最小大小,則它將自動增大。
Component
中的 setSize
width
- 元件的新寬度,單位是像素height
- 元件的新高度,單位是像素Component.getSize()
,
setBounds(int, int, int, int)
,
setMinimumSize(java.awt.Dimension)
@Deprecated public void reshape(int x, int y, int width, int height)
setBounds(int, int, int, int)
取代。
Component
中的 reshape
public void setVisible(boolean b)
b
的值顯示或隱藏此 Window
。
Component
中的 setVisible
b
- 如為 true
,則使 Window
可見,否則隱藏 Window
。
如果 Window
和/或其所有者還不能顯示,則都不顯示。在使 Window
可見之前將驗證它。
如果 Window
已經可見,則此方法將 Window
帶到最前面。
如為 false
,則隱藏此 Window
、此 Window
的子元件,以及它擁有的所有子級。
調用 #setVisible(true)
可以重新使 Window
及其子元件可見。
Component.isDisplayable()
,
Component.setVisible(boolean)
,
toFront()
,
dispose()
@Deprecated public void show()
Component.setVisible(boolean)
取代。
Component
中的 show
Component.isDisplayable()
,
toFront()
@Deprecated public void hide()
Component.setVisible(boolean)
取代。
show
可以重新使視窗及其子元件可見。
Component
中的 hide
show()
,
dispose()
public void dispose()
Window
、其子元件及其擁有的所有子元件所使用的所有本機螢幕資源。即這些 Component
的資源將被破壞,它們使用的所有記憶體都將返回到作業系統,並將它們標記為不可顯示。
通過隨後調用 pack
或 show
重新建構本機資源,可以再次顯示 Window
及其子元件。重新創建的 Window
及其子元件的狀態與釋放 Window
時這些物件的狀態一致(不考慮這些操作之間的其他更改)。
注:當 Java 虛擬機器 (VM) 中最後的可顯示視窗被釋放後,虛擬機器可能會終止。有關更多資訊,請參閱 AWT Threading Issues。
Component.isDisplayable()
,
pack()
,
show()
public void toFront()
將此視窗放在堆疊(stack)空間順序的頂層,並在此虛擬機器中顯示在所有其他視窗的上面。如果此視窗不可見,則不會發生任何操作。有些平臺不允許擁有其他視窗的視窗顯示在它所擁有的視窗之上。有些平臺可能不允許此虛擬機器將其視窗放在本機應用程序視窗或其他虛擬機器視窗之上。此權限可能取決於此虛擬機器中的視窗是否已被設為焦點視窗。將進行所有嘗試來移動此視窗,使其位於堆疊(stack)空間順序中盡可能靠前的位置;但是,開發人員不應假定此方法在所有情況下都可以將此視窗移到所有其他視窗之上。
由於本機視窗系統多種多樣,因此無法保證對焦點視窗和活動視窗的更改能夠實作。在此視窗接收 WINDOW_GAINED_FOCUS 或 WINDOW_ACTIVATED 事件之前,開發人員不得假定此視窗是焦點視窗或活動視窗。在頂層視窗是焦點視窗的平臺上,此方法可能使此視窗成為焦點視窗(如果它還不是焦點視窗)。在堆疊(stack)空間順序通常不影響焦點視窗的平臺上,此方法可能維持焦點視窗和活動視窗不變。
如果此方法導致此視窗成為焦點視窗,而且此視窗是一個 Frame 或 Dialog,則它也將被啟動。如果此視窗是焦點視窗,但它不是一個 Frame 或 Dialog,則擁有此視窗的第一個 Frame 或 Dialog 將被啟動。
如果此視窗被網要對話框 (modal dialog) 阻塞,則阻塞對話框將置於最前端,仍然處於被阻塞視窗的前方。
toBack()
public void toBack()
在此虛擬機器中,將此視窗放在堆疊(stack)空間順序的底部,並在其他所有視窗之後顯示此視窗。如果此視窗不可見,則不發生任何操作。有些平臺不允許其他視窗擁有的視窗出現在其所有者下方。將進行所有嘗試來移動此視窗,使其位於堆疊(stack)空間順序中盡可能靠後的位置;不過,開發人員不應假定此方法在所有情況下都可以將此視窗移到所有其他視窗之下。
由於本機視窗系統多種多樣,因此無法保證對焦點視窗和活動視窗的更改能夠實作。在此視窗接收 WINDOW_LOST_FOCUS 或 WINDOW_DEACTIVATED 事件之前,開發人員不得假定此視窗不再是焦點視窗或活動視窗。在頂層視窗為焦點視窗的平臺上,此方法可能導致此視窗不再是焦點狀態。在此情況下,此虛擬機器中緊跟其後的可作為焦點的視窗將成為焦點視窗。在堆疊(stack)空間順序通常不影響焦點視窗的平臺上,此方法可能維持焦點視窗和活動視窗不變。
toFront()
public Toolkit getToolkit()
Component
中的 getToolkit
Toolkit
,
Toolkit.getDefaultToolkit()
,
Component.getToolkit()
public final String getWarningString()
checkTopLevelWindow
方法時,該方法返回 false
,那麼視窗是不安全的。
如果此視窗是安全的,則 getWarningString
返回 null
。如果此視窗是不安全的,則此方法檢查系統屬性 awt.appletWarning
,並返回此屬性的字元串值。
SecurityManager.checkTopLevelWindow(java.lang.Object)
public Locale getLocale()
Locale
物件。如果未設置區域,則返回預設的區域。
Component
中的 getLocale
Locale
public InputContext getInputContext()
Component
中的 getInputContext
null
Component.getInputContext()
public void setCursor(Cursor cursor)
如果 Java 平臺實作和/或本機系統不支持更改鼠標鼠標形狀,那麼此方法將沒有任何視覺效果。
Component
中的 setCursor
cursor
- 由 Cursor
類別定義的常數之一。如果此參數為 null,則此視窗的鼠標將被設置為型別 Cursor.DEFAULT_CURSOR。Component.getCursor()
,
Cursor
public Window getOwner()
public Window[] getOwnedWindows()
public static Window[] getWindows()
Window
(包括被擁有的和不被擁有的)組成。
如果從 applet 調用此方法,則返回陣列只包括該 applet 可存取的 Window
。
警告: 此方法可以返回系統創建的視窗,如列印對話框。應用程序不應該假定這些對話框存在,也不應該假定任何與這些對話框有關的內容(如元件位置、LayoutManager
或序列化)存在。
Frame.getFrames()
,
getOwnerlessWindows()
public static Window[] getOwnerlessWindows()
Window
組成。它們包括 Frame
以及沒有所有者的 Dialog
和 Window
。
如果從 applet 調用此方法,則返回陣列只包括該 applet 可存取的 Window
。
警告: 此方法可以返回系統創建的視窗,如列印對話框。應用程序不應該假定這些對話框存在,也不應該假定任何與這些對話框有關的內容(如元件位置、LayoutManager
或序列化)存在。
Frame.getFrames()
,
getWindows(sun.awt.AppContext)
public void setModalExclusionType(Dialog.ModalExclusionType exclusionType)
Dialog.ModalExclusionType
。
如果不支持給定型別,則使用 NO_EXCLUDE
。
註:如果將可見視窗更改為網要排斥型別,則只有在該視窗被隱藏然後再次出現後才有效。
exclusionType
- 此視窗的網要排斥型別;null
值等價於 NO_EXCLUDE
SecurityException
- 如果調用執行緒沒有權限使用給定 exclusionType
設置視窗的網要排斥屬性Dialog.ModalExclusionType
,
getModalExclusionType()
,
Toolkit.isModalExclusionTypeSupported(java.awt.Dialog.ModalExclusionType)
public Dialog.ModalExclusionType getModalExclusionType()
Dialog.ModalExclusionType
,
setModalExclusionType(java.awt.Dialog.ModalExclusionType)
public void addWindowListener(WindowListener l)
有關 AWT 執行緒網要的詳細資訊,請參考 AWT Threading Issues。
l
- 視窗偵聽器removeWindowListener(java.awt.event.WindowListener)
,
getWindowListeners()
public void addWindowStateListener(WindowStateListener l)
l
為 null
,則不拋出任何異常,且不執行任何操作。
有關 AWT 執行緒網要的詳細資訊,請參考 AWT Threading Issues。
l
- 視窗狀態偵聽器removeWindowStateListener(java.awt.event.WindowStateListener)
,
getWindowStateListeners()
public void addWindowFocusListener(WindowFocusListener l)
有關 AWT 執行緒網要的詳細資訊,請參考 AWT Threading Issues。
l
- 視窗焦點偵聽器removeWindowFocusListener(java.awt.event.WindowFocusListener)
,
getWindowFocusListeners()
public void removeWindowListener(WindowListener l)
有關 AWT 執行緒網要的詳細資訊,請參考 AWT Threading Issues。
l
- 視窗偵聽器addWindowListener(java.awt.event.WindowListener)
,
getWindowListeners()
public void removeWindowStateListener(WindowStateListener l)
l
為 null
,則不拋出任何異常,且不執行任何操作。
有關 AWT 執行緒網要的詳細資訊,請參考 AWT Threading Issues。
l
- 視窗狀態偵聽器addWindowStateListener(java.awt.event.WindowStateListener)
,
getWindowStateListeners()
public void removeWindowFocusListener(WindowFocusListener l)
有關 AWT 執行緒網要的詳細資訊,請參考 AWT Threading Issues。
l
- 視窗焦點偵聽器addWindowFocusListener(java.awt.event.WindowFocusListener)
,
getWindowFocusListeners()
public WindowListener[] getWindowListeners()
WindowListener
;如果當前未註冊視窗偵聽器,則返回一個空陣列addWindowListener(java.awt.event.WindowListener)
,
removeWindowListener(java.awt.event.WindowListener)
public WindowFocusListener[] getWindowFocusListeners()
WindowFocusListener
;如果當前未註冊視窗焦點偵聽器,則返回一個空陣列addWindowFocusListener(java.awt.event.WindowFocusListener)
,
removeWindowFocusListener(java.awt.event.WindowFocusListener)
public WindowStateListener[] getWindowStateListeners()
WindowStateListener
;如果當前未註冊視窗狀態偵聽器,則返回一個空陣列addWindowStateListener(java.awt.event.WindowStateListener)
,
removeWindowStateListener(java.awt.event.WindowStateListener)
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));如果不存在此類別偵聽器,則此方法將返回一個空陣列。
Container
中的 getListeners
listenerType
- 請求的偵聽器的型別;此參數應指定一個從 java.util.EventListener
繼承的介面
FooListener
的所有物件所組成的陣列;如果未添加此類別偵聽器,則返回一個空陣列
ClassCastException
- 如果 listenerType
未指定一個實作 java.util.EventListener
的類別或介面getWindowListeners()
protected void processEvent(AWTEvent e)
WindowEvent
,它將調用 processWindowEvent
方法,否則將調用其父級類別的 processEvent
。
注意,如果此事件參數為 null
,則此行為是不明確的,可能導致異常。
Container
中的 processEvent
e
- 事件Component.processComponentEvent(java.awt.event.ComponentEvent)
,
Component.processFocusEvent(java.awt.event.FocusEvent)
,
Component.processKeyEvent(java.awt.event.KeyEvent)
,
Component.processMouseEvent(java.awt.event.MouseEvent)
,
Component.processMouseMotionEvent(java.awt.event.MouseEvent)
,
Component.processInputMethodEvent(java.awt.event.InputMethodEvent)
,
Component.processHierarchyEvent(java.awt.event.HierarchyEvent)
,
Component.processMouseWheelEvent(java.awt.event.MouseWheelEvent)
protected void processWindowEvent(WindowEvent e)
addWindowListener
註冊 WindowListener 物件
enableEvents
啟用視窗事件
注意,如果此事件參數為 null
,則此行為是不明確的,可能導致異常。
e
- 視窗事件Component.enableEvents(long)
protected void processWindowFocusEvent(WindowEvent e)
addWindowFocusListener
註冊 WindowFocusListener
enableEvents
啟用視窗焦點事件
注意,如果此事件參數為 null
,則此行為是不明確的,可能導致異常。
e
- 視窗焦點事件Component.enableEvents(long)
protected void processWindowStateEvent(WindowEvent e)
WindowStateListener
物件。註:只有為此元件啟用了視窗事件時,此方法才有可能被調用。這在存在以下條件之一時發生:
addWindowStateListener
註冊 WindowStateListener
enableEvents
啟用視窗狀態事件
注意,如果此事件參數為 null
,則此行為是不明確的,可能導致異常。
e
- 視窗狀態事件Component.enableEvents(long)
public final void setAlwaysOnTop(boolean alwaysOnTop) throws SecurityException
如果某個其他視窗已經是 always-on-top,則不指定這些視窗之間的相互順序(與平臺有關)。任何視窗都不會置於 always-on-top 視窗之上,除非它也是一個 always-on-top 視窗。
所有 always-on-top 視窗擁有的視窗將繼承此狀態,自動成為 always-on-top 視窗。如果某個視窗不再是 always-on-top 視窗,則它所擁有的視窗也不再是 always-on-top 視窗。當 always-on-top 視窗調用 toBack
時,其 always-on-top 狀態將設置為 false
。
如果對某個視窗調用此方法且參數值為 true
,並且該視窗可見,平臺也支持此視窗為 always-on-top,那麼該視窗將立即向前,「鎖定」在最頂層位置。如果視窗當前不可見,那麼此方法將 always-on-top 狀態設置為 true
,但視窗不會向前。如果以後顯示該視窗,那麼它將 always-on-top。
如果 alwaysOnTop
為 true
,則此方法可使視窗 always-on-top。如果視窗是可見的(這包括將視窗前置,即 toFront
),則將其“鎖定”在最頂層的位置。如果視窗不可見,則除了設置 always-on-top 的屬性之外,不執行任何操作。如果以後視窗顯示出來,則該視窗將 always-on-top。如果視窗已經位於頂層,則此調用不執行任何操作。
如果對某個視窗調用此方法且參數值為 false
,則 always-on-top 狀態被設置為常規。該視窗保持在最頂層,但對於任何其他視窗來說,其 z-order 可以更改。對已經是常規狀態的視窗調用此方法且參數值為 false
將無效。如果沒有其他 always-on-top 視窗,將 always-on-top 狀態設置為 false 對視窗的相對 z-order 沒有影響。
注:有些平臺可能不支持 always-on-top 視窗。要檢測當前平臺是否支持 always-on-top 視窗,請使用 Toolkit.isAlwaysOnTopSupported()
和 isAlwaysOnTopSupported()
。如果工具套件或此視窗不支持 always-on-top 網要,則調用此方法無效。
如果安裝了 SecurityManager,則必須授予調用執行緒 AWTPermission "setWindowAlwaysOnTop" 權限,才能設置此屬性值。如果未授予此權限,則此方法將拋出 SecurityException,並且屬性的當前值保持不變。
alwaysOnTop
- 如果視窗應該始終位於其他視窗上方,則該參數為 true
SecurityException
- 如果調用執行緒無權設置 always-on-top 屬性值。isAlwaysOnTop()
,
toFront()
,
toBack()
,
AWTPermission
,
isAlwaysOnTopSupported()
,
Toolkit.isAlwaysOnTopSupported()
public boolean isAlwaysOnTopSupported()
true
;如果此視窗不支持 always-on-top 網要,或者工具套件不支持 always-on-top 視窗,則返回 false
。setAlwaysOnTop(boolean)
,
Toolkit.isAlwaysOnTopSupported()
public final boolean isAlwaysOnTop()
true
,否則,返回 false
setAlwaysOnTop(boolean)
public Component getFocusOwner()
getMostRecentFocusOwner()
,
isFocused()
public Component getMostRecentFocusOwner()
getFocusOwner()
相同的元件。如果此視窗不是焦點視窗,則返回最近請求焦點的子元件。如果沒有子元件請求過焦點,並且這是一個可成為焦點的視窗,則返回此視窗最初可成為焦點的元件。如果沒有子元件請求過焦點,並且這是一個不能成為焦點的視窗,則返回 null。
getFocusOwner()
,
isFocused()
,
isFocusableWindow()
public boolean isActive()
isFocused()
public boolean isFocused()
如果焦點視窗是一個 Frame 或 Dialog,那麼它同時也是一個活動視窗。否則,活動視窗將是擁有焦點視窗的第一個 Frame 或 Dialog。
isActive()
public Set<AWTKeyStroke> getFocusTraversalKeys(int id)
setFocusTraversalKeys
。)
如果未為此視窗顯式設置遍歷鍵,則返回此視窗的父視窗的遍歷鍵。如果未為此視窗的任何祖先顯式設置遍歷鍵,則返回當前 KeyboardFocusManager 的預設遍歷鍵。
Container
中的 getFocusTraversalKeys
id
- KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
IllegalArgumentException
- 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一Container.setFocusTraversalKeys(int, java.util.Set extends java.awt.AWTKeyStroke>)
,
KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS
,
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS
,
KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
,
KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
public final void setFocusCycleRoot(boolean focusCycleRoot)
Container
中的 setFocusCycleRoot
focusCycleRoot
- 忽略此值isFocusCycleRoot()
,
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
public final boolean isFocusCycleRoot()
true
,因為所有視窗必須是焦點遍歷循環的根。
Container
中的 isFocusCycleRoot
true
setFocusCycleRoot(boolean)
,
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
public final Container getFocusCycleRootAncestor()
null
,因為視窗沒有祖先;它們表示元件層次結構的頂層。
Component
中的 getFocusCycleRootAncestor
null
Container.isFocusCycleRoot()
public final boolean isFocusableWindow()
true
。對於不可成為焦點的 Frame 或 Dialog 的視窗,其可成為焦點的視窗狀態必須設置為 true
,其最近擁有的 Frame 或 Dialog 必須顯示在螢幕上,而且它必須至少包含其焦點遍歷循環中的一個元件。如果未滿足這些條件中的任何一個條件,則此視窗及其任何子元件都不能成為焦點所有者。
true
;否則返回 false
getFocusableWindowState()
,
setFocusableWindowState(boolean)
,
isShowing()
,
Component.isFocusable()
public boolean getFocusableWindowState()
isFocusableWindow
中列出的其他要求,其是否可以成為焦點視窗。如果此方法返回 false
,則 isFocusableWindow
也將返回 false
。如果此方法返回 true
,則 isFocusableWindow
可能返回 true
,也可能返回 false
,具體取決於視窗要成為焦點視窗所必須滿足的其他要求。
預設情況下,所有視窗都具有 focusable 的視窗狀態 true
。
isFocusableWindow()
,
setFocusableWindowState(boolean)
,
isShowing()
,
Component.setFocusable(boolean)
public void setFocusableWindowState(boolean focusableWindowState)
isFocusableWindow
中列出的其他要求,其是否可以成為焦點視窗。如果此視窗可成為焦點視窗狀態設置為 false
,則 isFocusableWindow
將返回 false
。如果此視窗的可成為焦點的視窗狀態設置為 true
,則 isFocusableWindow
可能返回 true
,也可能返回 false
,具體取決於要成為焦點的視窗所必須滿足的其他要求。
將視窗的焦點狀態設置為 false
是 AWT 標識應用程序的標準機制,AWT 是可用作浮動調色板或工具欄的視窗,因此應為是不可為焦點的視窗。在可見的 Window
上設置焦點狀態,可能在某些平臺上產生延遲的結果 — 只有在 Window
成為隱藏視窗,然後再可見後才發生實際的更改。為確保行為跨平臺的一致性,當 Window
不可見時設置 Window
的焦點狀態,然後再顯示它。
focusableWindowState
- 此視窗是否可以成為焦點視窗isFocusableWindow()
,
getFocusableWindowState()
,
isShowing()
,
Component.setFocusable(boolean)
public void addPropertyChangeListener(PropertyChangeListener listener)
如果偵聽器為 null,則不拋出任何異常,且不執行任何操作。
Container
中的 addPropertyChangeListener
listener
- 要添加的 PropertyChangeListenerComponent.removePropertyChangeListener(java.beans.PropertyChangeListener)
,
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
如果偵聽器為 null,則不拋出任何異常,且不執行任何操作。
Container
中的 addPropertyChangeListener
propertyName
- 上文列出的屬性名之一listener
- 要添加的 PropertyChangeListeneraddPropertyChangeListener(java.beans.PropertyChangeListener)
,
Component.removePropertyChangeListener(java.beans.PropertyChangeListener)
@Deprecated public boolean postEvent(Event e)
dispatchEvent(AWTEvent)
取代。
MenuContainer
中的 postEvent
Component
中的 postEvent
public boolean isShowing()
Component
中的 isShowing
true
;否則返回 false
Component.setVisible(boolean)
@Deprecated public void applyResourceBundle(ResourceBundle rb)
Component.applyComponentOrientation
取代。
@Deprecated public void applyResourceBundle(String rbName)
Component.applyComponentOrientation
取代。
public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
Component
中的 getAccessibleContext
public GraphicsConfiguration getGraphicsConfiguration()
Component
中的 getGraphicsConfiguration
Component
使用的 GraphicsConfiguration
,或者返回 null
public void setLocationRelativeTo(Component c)
如果元件當前未顯示,或者 c
為 null
,則此視窗將置於螢幕的中央。中點可以使用 GraphicsEnvironment.getCenterPoint
確定。
如果該元件的底部在螢幕外,則將該視窗放置在 Component
最接近視窗中心的一側。因此,如果 Component
在螢幕的右部,則 Window
將被放置在左部,反之亦然。
c
- 確定視窗位置涉及的元件GraphicsEnvironment.getCenterPoint()
public void createBufferStrategy(int numBuffers)
BufferStrategy
。首先嘗試 page-flipping 策略,然後使用加速緩衝區嘗試 blitting 策略。最後使用不加速的 blitting 策略。
每次調用此方法時,將丟棄此元件的現有緩衝策略。
numBuffers
- 要創建的緩衝區數
IllegalArgumentException
- 如果 numBuffers 小於 1。
IllegalStateException
- 如果元件不可顯示Component.isDisplayable()
,
getBufferStrategy()
public void createBufferStrategy(int numBuffers, BufferCapabilities caps) throws AWTException
每次調用此方法時,將丟棄此元件的現有緩衝策略。
numBuffers
- 要創建的緩衝區數,包括前緩衝區caps
- 創建緩衝策略所需的能力;不能為 null
AWTException
- 如果提供的能力不受支持或未得到滿足;這是有可能發生的,例如,如果當前無足夠的可用加速記憶體,或者指定了頁翻轉,但不可能實作。
IllegalArgumentException
- 如果 numBuffers 小於 1,或者 caps 為 null
getBufferStrategy()
public BufferStrategy getBufferStrategy()
BufferStrategy
。如果尚未創建或已經釋放了 BufferStrategy
,那麼此方法將返回 null。
createBufferStrategy(int)
public void setLocationByPlatform(boolean locationByPlatform)
getLocation
返回)。此行為模擬顯示的本機視窗,而不是以程式方式設置其位置。如果未顯式設置視窗的位置,那麼大多數視窗作業系統將重疊顯示視窗。一旦視窗顯示在螢幕上,其實際位置就被確定。
還可以通過將系統屬性 "java.awt.Window.locationByPlatform" 設置為 "true" 來啟用此行為,但應優先考慮調用此方法。
在調用 setLocationByPlatform
清除視窗的此屬性之後,調用 setVisible
、setLocation
和 setBounds
。
例如,在執行以下程式碼後:
視窗將顯示在平臺的預設位置,setLocationByPlatform(true); setVisible(true); boolean flag = isLocationByPlatform();
flag
將為 false
。
在以下範例中:
視窗將顯示在 (10, 10) 的位置,setLocationByPlatform(true); setLocation(10, 10); boolean flag = isLocationByPlatform(); setVisible(true);
flag
將為 false
。
locationByPlatform
- 如果此視窗應出現在預設位置,則為 true
,如果應出現在當前位置,則為 false
IllegalComponentStateException
- 如果此視窗顯示在螢幕上,且 locationByPlatform 為 true
。Component.setLocation(int, int)
,
isShowing()
,
setVisible(boolean)
,
isLocationByPlatform()
,
System.getProperty(String)
public boolean isLocationByPlatform()
true
。如果視窗顯示在螢幕上,則此方法始終返回 false
。
setLocationByPlatform(boolean)
,
isShowing()
public void setBounds(int x, int y, int width, int height)
x
和 y
指定左上角的新位置,由 width
和 height
指定新的大小。
如果 width
值或 height
值小於之前調用 setMinimumSize
指定的最小大小,則它的值將自動增加。
Component
中的 setBounds
x
- 元件的新 x 坐標y
- 元件的新 y 坐標width
- 元件的新 width
height
- 元件的新 height
Component.getBounds()
,
Component.setLocation(int, int)
,
Component.setLocation(Point)
,
setSize(int, int)
,
setSize(Dimension)
,
setMinimumSize(java.awt.Dimension)
,
setLocationByPlatform(boolean)
,
isLocationByPlatform()
public void setBounds(Rectangle r)
r
。由 r.x
和 r.y
指定元件的新位置,由 r.width
和 r.height
指定元件的新大小
如果 r.width
值或 r.height
值小於之前調用 setMinimumSize
指定的最小大小,則它的值將自動增加。
Component
中的 setBounds
r
- 此元件的新的有界矩形Component.getBounds()
,
Component.setLocation(int, int)
,
Component.setLocation(Point)
,
setSize(int, int)
,
setSize(Dimension)
,
setMinimumSize(java.awt.Dimension)
,
setLocationByPlatform(boolean)
,
isLocationByPlatform()
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。