javafx html5_JavaFX技巧5:可观察
javafx html5
即使在整個NSA監視的這段時間,實現JavaFX控件時也要牢記可觀察性,這仍然是一個好主意。 與Swing相比,這在JavaFX中很容易實現。
舊時光
來自Swing,我習慣于花費大量精力和時間來使自定義控件變得可觀察。 通常需要添加方法來添加和刪除某種類型的偵聽器。 此偵聽器類型是一個新接口,該接口的單個??方法接受了一個新的事件對象。 要發送此事件對象,控件必須在我的自定義控件中“觸發”它,因此我最終編寫了fireXYZ()方法。 要做很多工作只是為了讓人們知道控件狀態的某些方面已經改變。
新時代
在JavaFX中,通過使用屬性和可觀察的集合可以更輕松地實現可觀察性。 在FlexGanttFX框架中,其控件的幾乎每個屬性都是屬性,并且所有集合都是通過FXCollections類創建的,該類返回可觀察的集合。 這很有意義,因為每個控件的屬性總數定義了它的狀態,并且此狀態需要是可觀察的,以便應用程序的其他部分(尤其是其他控件)可以對狀態更改做出React。
樣板代碼
使用屬性的不利之處在于,您最終編寫了許多樣板代碼,但仍然比Swing少。 對于布爾型屬性,它將看起來像這樣:
public final BooleanProperty showStuff =new SimpleBooleanProperty(this, "showStuff", true);public final BooleanProperty showStuffProperty() {return showStuff; }public final boolean isShowStuff() {return showStuff.get(); }public final void setShowStuff(boolean show) {showStuff.set(show); }是的,您應該完全遵循此編碼約定。 對于名為xxx的屬性,請提供名為xxxProperty()的屬性訪問器方法,名為setXXX()的設置程序和名為getXXX()的獲取程序。 這是在JavaFX中使用它的方式,您應該堅持使用它。
使用集合時,通常至少會得到以下代碼:
private final ObservableList<String> names =FXCollections.observableArrayList();public final ObservableList<String> getNames() {return names; }在JavaFX核心控件中,集合通常存儲在一個屬性中,以便可以用新集合替換整個集合。 到目前為止,我尚未在控件中真正看到對此的強烈要求,并且不這樣做就意味著我不必為此情況編寫屬性偵聽器。
聽眾
現在,我們的控件屬性是屬性,我們可以通過向它們添加偵聽器(使用lambda表達式)來輕松地對狀態更改做出React。
myControl.showStuffProperty().addListener(it -> showStuffChanged());myControl.getNames().addListener((Observable observable) -> namesChanged());結論
在設計自己的自定義控件時,通過屬性和可觀察的集合在控件類中公開其狀態。 這樣,每個人都將能夠以與整個JavaFX框架一致的方式觀察控件的狀態,并使其他開發人員能夠無縫地將其控件/應用程序與您的控件集成在一起。
翻譯自: https://www.javacodegeeks.com/2014/07/javafx-tip-5-be-observable.html
javafx html5
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的javafx html5_JavaFX技巧5:可观察的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备案省份是随便选择吗(备案省)
- 下一篇: 重复码