日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaFX技巧11:更新只读属性

發布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaFX技巧11:更新只读属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自定義控件通常具有“只讀”屬性。 這意味著不能從控件外部進行設置,甚至不能從自己的皮膚類別進行設置。 通常,控件的行為會導致更改只讀屬性。 在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技巧11:更新只读属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。