2013-05-04 10 views
6

मैं एक टेबल व्यू के साथ एक टेबल बनाने की कोशिश कर रहा हूं और इसे User ऑब्जेक्ट्स की सूची के आधार पर प्रोग्रामेटिक रूप से भर रहा हूं। User में तीन चर हैं, nameProperty (स्ट्रिंग), rankProperty (एनम रैंक कहा जाता है), और netMeritsProperty (int)। ये सभी SimpleStringProperty ऑब्जेक्ट्स में संग्रहीत हैं। मेरे समस्या यह है कि डेटा, वास्तविक तालिका में दिखाई नहीं देगा जैसा कि यहाँ दिखाया है:PropertyValueFactory का सही तरीके से उपयोग कैसे करें?

यहाँ तालिका के लिए अपने कोड है। मुझे क्या समझ में नहीं आ रहा है?

TableColumn<User, String> name = new TableColumn<>("Name"); 
name.setCellValueFactory(new PropertyValueFactory<User, String>("nameProperty")); 

TableColumn<User, String> rank = new TableColumn<>("Rank"); 
rank.setCellValueFactory(new PropertyValueFactory<User, String>("rankProperty")); 

TableColumn<User, String> netMerits = new TableColumn<>("Net Merits"); 
netMerits.setCellValueFactory(new PropertyValueFactory<User, String>("netMeritsProperty")); 

userTable.getColumns().addAll(name, rank, netMerits); 
+0

और यह दस्तावेज़ आपकी मदद नहीं करते हैं? http://docs.oracle.com/javafx/2/ui_controls/table-view.htm –

+1

संभवतः, आपको "nameProperty", आदि के अंत में "संपत्ति" जोड़ने की आवश्यकता नहीं है? –

+0

या आपने डेटाव्यू को डेटा –

उत्तर

14

जवाब ध्यान है, जो स्ट्रिंग सामग्री आप PropertyValueFactory के पैरामीटर, और जो तरीकों अपने समझाया डेटा प्रकार में लागू किया जाता है के रूप में देने के बारे में है।

प्रारंभ:

new PropertyValueFactory<User, String>("name") 

के लिए देखने देगा:

User.nameProperty() 
+0

अलेक्जेंडर मैंने इस बारे में कहीं और पढ़ा लेकिन लिंक खोजने में असमर्थ। क्या आपने इसे कहां से पढ़ा है? क्योंकि पूरी मार्गदर्शिका थी कि संपत्ति कैसे काम करती है। यदि कंपाइलर को नाम पेरोप्टी() मिला तो यह इस पर कॉल करेगा, यह नाम(); – UnKnown

11

PropertyValueFactory का उपयोग करना सरल है, लेकिन यह सरल नहीं है।

  1. आप शब्द शामिल नहीं करना चाहिए "संपत्ति"
  2. :

    शायद PropertyValueFactory उपयोग करने के लिए सबसे परेशानी बात यह है कि तर्क उपलब्ध कराने एक सख्त परंपरा के अनुसार अपने JavaFX बीन गुण का नाम से मेल खाना चाहिए है ताकि "FIRSTNAME" के रूप में "firstName"

सबसे अच्छा तरीका है अपने JavaFX बीन परिभाषा ब्लॉक को देखो, और अपने संपत्ति लाइन को मिल रहा है नहीं पहचाना जाएगा

  • मिलान, केस-संवेदी है। संपत्ति का नाम लें, "संपत्ति" का हिस्सा छोड़ दें, और इसे वास्तव में (उसी मामले में) उस स्ट्रिंग पर कॉपी करें जिसे आप PropertyValueFactory को पास करते हैं। अंतिम पंक्ति, "firstNameProperty" में संपत्ति के नाम पर

    public final String getFirstName() { return this.m_firstname.get(); } 
    public final void setFirstName(String v) { this.m_firstname.set(v); } 
    public final StringProperty firstNameProperty() { return m_firstname; } 
    

    देखो:

    उदाहरण के लिए, आप इस JavaFX बीन परिभाषा का कहना है। "संपत्ति" को छोड़ दें, और परिणामस्वरूप स्ट्रिंग वह है जो आपको उपयोग करनी चाहिए - ठीक है- आपके स्ट्रिंग तर्क के रूप में PropertyValueFactory, उदाहरण के लिए। "पहला नाम"।

    tcolMyTableCol.setCellValueFactory(new PropertyValueFactory("firstName")); 
    
  • संबंधित मुद्दे