javafx属性_JavaFX技巧11:更新只读属性
生活随笔
收集整理的這篇文章主要介紹了
javafx属性_JavaFX技巧11:更新只读属性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
javafx屬性
自定義控件通常具有“只讀”屬性。 這意味著不能從控件外部進行設置,甚至不能從自己的皮膚類別進行設置。 通常,控件的行為會導致更改只讀屬性。 在JavaFX中,此行為可以在控件本身和皮膚中實現。 因此,有時我們最終希望通過皮膚來更新控件的只讀屬性。 如何才能做到這一點?
后門:物業地圖
解決方案非常簡單:將控件的屬性映射用作控件類的后門。 屬性映射是可觀察到的,因此,如果外觀在映射中設置一個值,則將通知控件,并且可以更新只讀屬性本身的值。
控制類
控件類中的屬性可以這樣定義:
private final ReadOnlyDoubleWrapper myReadOnly =new ReadOnlyDoubleWrapper();public final ReadOnlyDoubleProperty myReadOnlyProperty() {return myReadOnly.getReadOnlyProperty(); }public final Double getMyReadOnly() {return myReadOnly.get(); }為了更新屬性,控件類使用其自己的屬性映射注冊一個偵聽器,并偵聽對名為“ myReadOnly”的屬性的更改:
getProperties().addListener(new MapChangeListener() {public void onChanged(Change c) {if (c.wasAdded() && "myReadOnly".equals(c.getKey())) {if (c.getValueAdded() instanceof Number) {myReadOnly.set((Double) c.getValueAdded());}getProperties().remove("myReadOnly");}} });重要提示:請確保對屬性鍵使用唯一的名稱,否則可能會導致命名沖突。 優良作法是在名稱前加上控件的程序包名稱,例如com.myframework.myReadOnly。
皮膚課
現在,外觀類可以通過在控件的屬性映射中設置屬性值來更新屬性:
getSkinnable().getProperties().put("myReadOnly", 42);翻譯自: https://www.javacodegeeks.com/2014/07/javafx-tip-11-updating-read-only-properties.html
javafx屬性
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的javafx属性_JavaFX技巧11:更新只读属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米推出米家智能电蒸锅 12L,众筹价
- 下一篇: 蔚来为什么要造智能手机?iQOO高管给了