2013-06-11 11 views
8

पॉप्युलेट नहीं कर रहा है इसने मुझे थोड़ी देर के लिए परेशान कर दिया है और मुझे इसकी समझ नहीं मिल रही है। मैं सेल वैल्यू फैक्टरी का उपयोग एक साधारण कॉलम टेबल को पॉप्युलेट करने के लिए कर रहा हूं और यह तालिका में पॉप्युलेट नहीं करता है।जावाफैक्स प्रॉपर्टी वैल्यू फैक्ट्री टेबलव्यू

यह करता है और मैं उन पंक्तियों पर क्लिक करता हूं जो आबादी वाले हैं लेकिन मुझे उनमें कोई मूल्य नहीं दिख रहा है- इस मामले में स्ट्रिंग मान। [मैंने इसे स्पष्ट करने के लिए इसे संपादित किया है]

मेरे पास एक अलग परियोजना है जिसके अंतर्गत यह उसी प्रकार के डेटा मॉडल के तहत काम करता है। मैं क्या गलत कर रहा हूं?

यहां कोड है। अंत में टिप्पणी कोड हालांकि काम करता प्रतीत होता है। मैंने यह देखने के लिए जांच की है कि क्या सामान्य गलतियों- एक नया कॉलम उदाहरण या एक नया टेबलव्यू उदाहरण बनाना, वहां हैं। कुछ भी तो नहीं। कृपया सहायता कीजिए!


// सरल डेटा मॉडल Stock.java

public class Stock { 

    private SimpleStringProperty stockTicker; 

    public Stock(String stockTicker) { 
     this.stockTicker = new SimpleStringProperty(stockTicker); 
    } 

    public String getstockTicker() { 
     return stockTicker.get(); 
    } 

    public void setstockTicker(String stockticker) { 
     stockTicker.set(stockticker); 
    } 
} 

// नियंत्रक वर्ग MainGuiController.java

private ObservableList<Stock> data; 
    @FXML 
    private TableView<Stock> stockTableView;// = new TableView<>(data); 
    @FXML 
    private TableColumn<Stock, String> tickerCol; 


    private void setTickersToCol() { 
    try { 
     Statement stmt = conn.createStatement();//conn is defined and works 
     ResultSet rsltset = stmt.executeQuery("SELECT ticker FROM tickerlist order by ticker"); 
     data = FXCollections.observableArrayList(); 
     Stock stockInstance; 
     while (rsltset.next()) { 
      stockInstance = new Stock(rsltset.getString(1).toUpperCase()); 
      data.add(stockInstance); 
     } 
    } catch (SQLException ex) { 
     Logger.getLogger(WriteToFile.class.getName()).log(Level.SEVERE, null, ex); 
     System.out.println("Connection Failed! Check output console"); 
    } 

    tickerCol.setCellValueFactory(new PropertyValueFactory<Stock,String>("stockTicker")); 
    stockTableView.setItems(data); 
    } 

    /*THIS, ON THE OTHER HAND, WORKS*/ 
    /*Callback<CellDataFeatures<Stock, String>, ObservableValue<String>> cellDataFeat = 
      new Callback<CellDataFeatures<Stock, String>, ObservableValue<String>>() { 
     @Override 
     public ObservableValue<String> call(CellDataFeatures<Stock, String> p) { 
      return new SimpleStringProperty(p.getValue().getstockTicker()); 
     } 
    };*/ 

उत्तर

24

कैसे तय करने के लिए यह

मामले तुम्हारा मिलता है टेर और सेटर विधियां गलत हैं।

getstockTicker होना चाहिए getStockTicker

setstockTicker होना चाहिए setStockTicker

कुछ पृष्ठभूमि जानकारी

आपका PropertyValueFactory साथ ही रहता है:

new PropertyValueFactory<Stock,String>("stockTicker") 

नामकरण परंपरा Wil एल और अधिक स्पष्ट प्रतीत जब आप भी अपने शेयर वर्ग के लिए एक संपत्ति एक्सेसर जोड़ें:

public class Stock { 

    private SimpleStringProperty stockTicker; 

    public Stock(String stockTicker) { 
     this.stockTicker = new SimpleStringProperty(stockTicker); 
    } 

    public String getStockTicker() { 
     return stockTicker.get(); 
    } 

    public void setStockTicker(String stockticker) { 
     stockTicker.set(stockticker); 
    } 

    public StringProperty stockTickerProperty() { 
     return stockTicker; 
    } 
} 

PropertyValueFactory प्रासंगिक accessors खोजने के लिए प्रतिबिंब का उपयोग करता है। सबसे पहले यह स्टॉक टिकरप्रोपर्टी एक्सेसर का उपयोग करने की कोशिश करेगा और यदि वह मौजूद नहीं है तो गेटर्स और सेटर्स पर वापस आना। एक संपत्ति एक्सेसर प्रदान करने की अनुशंसा की जाती है, तब आप स्वचालित रूप से अंतर्निहित मॉडल में संपत्ति का निरीक्षण करने के लिए अपनी तालिका को सक्षम कर सकते हैं, अंतर्निहित मॉडल परिवर्तनों के रूप में गतिशील रूप से इसके डेटा को अपडेट कर सकते हैं।

+1

यहां सबसे अधिक बढ़िया भाग है: मेरा सभी कोड इस तरह के एक विधि नामकरण सम्मेलन का उपयोग करता है। यह सब (अच्छी तरह से उस स्निपेट को छोड़कर) मैंने इस मुद्दे पर दिन बिताए हैं ... मेरे फकीन भगवान! आपको धन्यवाद !!!! –

+0

@jewelsea क्यों दो बार बुलाया जाता है? और व्यक्ति की वस्तु से अधिक? – UnKnown

+0

क्षमा करें अज्ञात, मुझे समझ में नहीं आता कि आप क्या पूछ रहे हैं। आप एक नया सवाल पूछना चाहेंगे। – jewelsea

0

सभी तत्वों के लिए डेटा क्लास में गेटटर और सेटर विधि डालें।

+0

क्या आप थोड़ा और विशिष्ट हो सकते हैं? कृपया उन उत्तरों को प्रदान करें जिन्हें पूछताछ से स्पष्टीकरण की आवश्यकता नहीं है। अधिक पढ़ने के लिए [कैसे जवाब दें] (http://stackoverflow.com/help/how-to-answer)। –

संबंधित मुद्दे