为了账号安全,请及时绑定邮箱和手机立即绑定

JavaFX PropertyValueFactory未填充Tableview

JavaFX PropertyValueFactory未填充Tableview

慕神8447489 2019-06-24 17:12:45
JavaFX PropertyValueFactory未填充Tableview这使我困惑了一段时间,我似乎无法理解它。我使用CellValueFactory填充一个简单的单列表,但它没有在表中填充。这样做了,我点击了填充的行,但是我没有看到它们中的任何值-在本例中,是字符串值。[我只是编辑了这篇文章,使之更清晰]我有一个不同的项目,它在相同的数据模型下工作。我做错什么了?这是密码。不过,最后的注释代码似乎有效。我已经检查了是否存在常见的错误-创建新的列实例或新的tableview实例。没什么。救命啊!/简单数据模型Stock.javapublic 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);     }}/Controller类MainguicController.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());         }     };*/
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

如何修复它

getter和setter方法的情况是错误的。

getstockTicker应该是getStockTicker

setstockTicker应该是setStockTicker

一些背景资料

您的PropertyValueFactory与以下内容相同:

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

当您还向Stock类添加属性访问器时,命名约定将变得更加明显:

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使用反射查找相关的访问器。首先,它将尝试使用StockTickerProperty访问器,如果不存在,则返回到getter和setter。建议提供一个属性访问器,因为您将自动启用您的表来观察基础模型中的属性,并在底层模型更改时动态更新它的数据。


查看完整回答
反对 回复 2019-06-24
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

将getter和Setter方法放入所有元素的数据类中。


查看完整回答
反对 回复 2019-06-24
  • 2 回答
  • 0 关注
  • 1182 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号