2012-09-14 84 views
7

javafx屬性是將數據模型連接到javafx gui的好方法,因爲它們的綁定模型實現了強大的通知更新機制。
在數據模型中使用javafx屬性和綁定

屬性和綁定不是嚴格的gui相關,而是它們是javabeans的擴展。

因此,人們希望在應用程序模型類中使用它們,而不會引入對包javafx.beans.property.StringProperty和一般來說javafx.*的依賴關係。

換句話說:(更新)
我可能需要應用程序分成兩個模塊。
一個模塊應該只包含操縱數據的類(Model類,MVC說)。
第二個模塊將包含所有圖形gui的東西,即javafx。

如果我的數據類使用javafx綁定,我會引入一個導入javafx.beans.anything;(最好的情況是綁定是java。*或javax。*的一部分,所以我不會將「gui庫」引用到核心數據庫)。 javafx將被包含在標準版本中的事實緩解了這個問題,但它似乎是一個棘手的解決方案。畢竟,我認爲我眯起了一個網絡應用程序,這取決於一些擺動「實用程序」類。

有沒有可用的選項?

我正在評估創建具有監聽器的常規javabeans屬性並將它們橋接到fx屬性所需的工作量。

+1

你能說清楚'使用javafx屬性而不依賴於javafx.beans包'是什麼意思嗎?你可以從這個包裏使用它們或者編寫你自己的包。鑑於JavaFX自7u4以來就是Java的一部分,後一種選擇並不是很有用。 –

+0

我已添加'換句話說'。 – AgostinoX

+1

謝爾蓋給你正確的提示。如果你喜歡使用屬性和綁定,只需在你的模型中使用這些屬性!無論如何,它是7u4以來的所有JDK的一部分。 – pmoule

回答

1

JavaFX對象綁定到POJO(普通Java對象)techinque可能會幫助你。

看下集教程:http://ugate.wordpress.com/2012/06/06/javafx-pojo-bindings/

兩個詞你可以使用旁邊的方式來訪問POJO對象:

Person person = new Person(); 
    PathProperty prop = new PathProperty(
     person, "address.streetName", String.class); 
    Bindings.bindBidirectional(prop, myTextField.textProperty()); 
    prop.set("123 1st Street");