一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

JavaFX API詳解之Window,Stage,PopupWindow

 昵稱14228556 2013-10-22
 stage包中包含
Window, Stage, PopupWindow, Popup, FileChooser, DirectoryChooser, Screen等類。

其中Window類可理解成一個窗體,用于存放Scene,并與用戶操作。一般window作為窗體,都用其子類Stage和PopupWindow。
看一下Window作為窗體的頂級類包含的一些共同屬性
eventDispatcher setEventDispatcher(EventDispatcher value)
focused: 焦點集中 setFocused(boolean)設(shè)置
x y width height: 位置及大小 setX(double),setY(double),setWidth(double),setHeight(double) 設(shè)置
onCloseRequest 關(guān)閉Window事件 setOnCloseRequest(EventHandler)
onHidden 隱藏事件 setOnHidden(EventHandler)
onHiding 隱藏事件,優(yōu)先于OnHidden setOnHiding(EventHandler)
onShowing 顯示事件 setOnShowing(EventHandler)
onShown 顯示事件,在OnShowing之后 setOnShown(EventHandler)
opacity 透明 setOpacity(double) 值為0到1
scene 設(shè)置場景 setScene(Scene)
showing 是否是顯示狀態(tài) isShowing()

Window的一些方法:
addEventFilter(EventType eventType, EventHandler eventFilter) 添加事件過濾
removeEventFilter(EventType eventType, EventHandler eventFilter)
addEventHandler(EventType eventType, EventHandler eventHandler) 添加事件
removeEventHandler(EventType eventType, EventHandler eventHandler)
buildEventDispatchChain(EventDispatchChain tail)
centerOnScreen() 使Window顯示中間
hide() 隱藏 實際就是關(guān)閉
show() 保護類型 顯示window
requestFocus() 要求焦點集中
sizeToScene() 使Window的大小匹配它Scene的大小。如果你沒有設(shè)置Window大小的話,那么就是剛好匹配的(匹配不等于相等了,window始終要大Scene一些)。若果你設(shè)置了window大小,在調(diào)用該方法,則會改變window的大小以匹配Scene大小。 最好的例子是,你設(shè)置window大小,而不設(shè)置Scene大小,再調(diào)用該方法。
fireEvent(Event event) 調(diào)用指定的事件

Stage作為頂級容器,其主Stage由系統(tǒng)創(chuàng)建。額外的可由應(yīng)用程序創(chuàng)建。
fullScreen 是否全屏,該屬性類型為ReadOnly,不可綁定。 setFullScreen(boolean) 雖然是全屏 但是width,height等屬性值仍不變,若在全屏的時候改變這些值,返回原來狀態(tài)的時候,使用改變后的值。
iconified 是否最小化 setIconified(boolean)
resizable 設(shè)置大小是否變化 setResizable(boolean) 為true則不能拉動stage的大小
title 設(shè)置標題
maxHeight maxWidth minHeight minWidth 設(shè)置最大最小高寬

stage的一些方法:
initModality(Modality modality) 設(shè)置stage的形態(tài),根據(jù)功能來講就是窗口之間的阻塞模式,該方法不能被primaryStage調(diào)用,只能被自己創(chuàng)建的stage調(diào)用。
Modality.NONE – a stage that does not block any other window.
不限制,父窗口與子窗口之間沒阻塞
Modality.WINDOW_MODAL – a stage that blocks input events from being delivered to all windows from its owner (parent) to its root. Its root is the closest ancestor window without an owner.
阻塞父窗口,也就是子窗口出現(xiàn)的時候,父窗口點擊不了。
Modality.APPLICATION_MODAL – a stage that blocks input events from being delivered to all windows from the same application, except for those from its child hierarchy.
這種為阻塞其它窗口,除了它的子窗口。

initStyle(StageStyle style) 設(shè)置樣式 設(shè)置樣式也可以通過stage的構(gòu)造函數(shù)設(shè)置
StageStyle.DECORATED – a stage with a solid white background and platform decorations.
一般的stage
StageStyle.UNDECORATED – a stage with a solid white background and no decorations.
白色背景,沒有修飾
StageStyle.TRANSPARENT – a stage with a transparent background and no decorations.
透明,沒有修飾
StageStyle.UTILITY – a stage with a solid white background and minimal platform decorations.
白色背景,僅一個關(guān)閉按鈕

close() 關(guān)閉窗口 也就是調(diào)用父類的Hide()方法
initOwner(Window owner)指定所屬的window,就相當指定父窗口。
showAndWait()調(diào)用之后會阻塞在這里,直到被hidden或closed(被調(diào)用隱藏或關(guān)閉它),才會喚醒,繼續(xù)執(zhí)行下面的代碼。 舉個例子,假如我在代碼里面創(chuàng)建了2個stage,可是我想第一個stage關(guān)閉的時候才創(chuàng)建第二個,此時你就可以在第一個stage創(chuàng)建完后調(diào)用showAndWait()方法,當?shù)谝粋€被隱藏或關(guān)閉時,才會繼續(xù)執(zhí)行第二個stage的創(chuàng)建方法。
toBack() 實現(xiàn)在后端
toFront() 顯示在前端

PopupWindow作為頂級容器,但本身是抽象類。其主要子類由Popup, 和 PopupControl。 而PopupControl并不是直接使用的空間,而是其子類ContextMenu,Tooltip。 PopupWindow可理解成彈出層,子類Popup用于自定義彈出層,ContextMenu,Tooltip為系統(tǒng)實現(xiàn)的彈出層。
PopupWindw和stage不同,它沒有窗體的修飾,沒有標題欄,并且不會作為頂級容器直接在操作系統(tǒng)上顯示(一般都在stage上顯示)。一般用于提醒,可移動的Box等。
看一下PopupWindow作為彈出框的頂級類所包含的一些共同屬性:
autoFix
autoHide 自動隱藏,setAutoHide(boolean) 默認值為true。在焦點失去的時候會隱藏(可是什么顯示卻沒有)。
consumeAutoHidingEvents 是否在隱藏的時候消費掉事件, setConsumeAutoHidingEvents(boolean) 也就是說調(diào)用完隱藏事件后,就消耗掉事件,不再往下傳遞,避免Popup的UI控件觸發(fā)事件。舉個例子假如你失去焦點時,PopupWindow的autoHide事件觸發(fā),同時PopupWindow的一個UI控件也觸發(fā)了這個事件,此時設(shè)置consumeAutoHidingEvents為true,因為會首先調(diào)用autoHide事件,并且把這個響應(yīng)事件消耗了,所以那個UI控件的事件就不會被處理了。
hideOnEscape 這個就是你按esc的時候PopupWindow是否隱藏,setHideOnEscape(boolean)
onAutoHide 自動隱藏處理事件, setOnAutoHide(EventHandler) 。 在它本身的隱藏事件后調(diào)用。
ownerNode,ownerWindow 所屬的節(jié)點和窗口,只讀對象。 PopupWindow顯示必須指定其擁有者,所以就有該屬性。
可以看它的show方法,owner可以是window,也可以是Node
show(Window owner)
show(Window ownerWindow, double screenX, double screenY)
show(Node ownerNode, double screenX, double screenY)
顯示在該節(jié)點右側(cè):
double screenX = button.getScene().getWindow().getX() + button.getScene().getX() + button.localToScene(0, 0).getX(); 這里計算出button位于Screen中的位置,然后只需要加上Button的寬度。
double width = button.getBoundsInParent().getWidth(); 因為BoundsInParent包含button的effect效果占的位置,所以用這個比button.getWidth()好。
只要確定了button在Screen中的位置,然后PopWindow想位于button的哪里就好計算了。
button.localToScene(0, 0) 其中有二個參數(shù),這是指Node自身以那個點作為坐標點。 舉例:button以左上方點0,0作為位置計算的點,所以參數(shù)是0,0。假若是circle,則參數(shù)是circle.centerX,circle.centerY,因為circle是以中心點作為坐標點。
獲取owner
getOwnerWindow()
getOwnerNode()

再看一下PopupWindow中一些方法:
hide() 隱藏。
setScene(Scene scene) 設(shè)置scene,保護類型。PopupWindow已經(jīng)創(chuàng)建了Scene,并指定了根節(jié)點。
getContent() 保護類型,獲取根節(jié)點的ChildrenList。
看一下getContent的源碼
protected ObservableList getContent() {
final Parent rootNode = getScene().getRoot();
if (!(rootNode instanceof Group)) {
throw new IllegalStateException(
“The content of the Popup can’t be accessed”);
}

return ((Group) rootNode).getChildren();
}
不難發(fā)現(xiàn)根節(jié)點就是Group。

一般我們要開發(fā)PopupWindow,直接使用它的子類Popup。
Popup中就一個getContent() 方法,看它的源碼,就是調(diào)用了PopupWindow的getContent方法。
public final ObservableList getContent() {
return super.getContent();
}

其中有些方法,沒使用過,理解有點模糊,就沒寫,知道的大家評論下,互相學(xué)習(xí)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产成人精品一区在线观看| 国产精品日韩精品一区| 人人爽夜夜爽夜夜爽精品视频| 日本少妇三级三级三级| 亚洲一区二区欧美在线| 日韩欧美三级视频在线| 丰满人妻一二区二区三区av| 欧美中文日韩一区久久| 男人和女人干逼的视频| 国产精品久久熟女吞精| 欧美精品专区一区二区| 青草草在线视频免费视频| 免费观看日韩一级黄色大片| 国产精欧美一区二区三区久久| 暴力性生活在线免费视频| 国产成人国产精品国产三级| 中文字幕精品少妇人妻| 国产不卡视频一区在线| 韩日黄片在线免费观看| 很黄很污在线免费观看| 字幕日本欧美一区二区| 亚洲一区二区三区有码| av中文字幕一区二区三区在线| 丰满人妻熟妇乱又伦精另类视频 | 国产一区二区三区色噜噜| 国产91人妻精品一区二区三区| 欧美亚洲美女资源国产| 欧美精品日韩精品一区| 欧美乱视频一区二区三区| 国产老熟女超碰一区二区三区| 亚洲伦理中文字幕在线观看| 久久经典一区二区三区| 91欧美日韩精品在线| 一二区中文字幕在线观看| 色婷婷久久五月中文字幕| 婷婷色香五月综合激激情| 日韩av亚洲一区二区三区| 国产一级二级三级观看| 九七人妻一区二区三区| 国产精品国产亚洲看不卡| 99亚洲综合精品成人网色播|