Javafx 2 Javafx PropertyValueFactory未填充Tableview
这让我困惑了一段时间,我似乎无法理解。我使用单元格值工厂来填充一个简单的单列表,但它不在表中填充 确实如此,我单击了填充的行,但在其中没有看到任何值——在本例中是字符串值。[我只是编辑了一下,让它更清晰] 我有一个不同的项目,它在同一种数据模型下工作。我做错了什么 这是密码。不过,最后的注释代码似乎可以工作。我已经检查了是否存在常见的错误——创建新的列实例或新的tableview实例。没有什么请帮忙 //简单数据模型 Stock.javaJavafx 2 Javafx PropertyValueFactory未填充Tableview,javafx-2,javafx,tableview,Javafx 2,Javafx,Tableview,这让我困惑了一段时间,我似乎无法理解。我使用单元格值工厂来填充一个简单的单列表,但它不在表中填充 确实如此,我单击了填充的行,但在其中没有看到任何值——在本例中是字符串值。[我只是编辑了一下,让它更清晰] 我有一个不同的项目,它在同一种数据模型下工作。我做错了什么 这是密码。不过,最后的注释代码似乎可以工作。我已经检查了是否存在常见的错误——创建新的列实例或新的tableview实例。没有什么请帮忙 //简单数据模型 Stock.java public class Stock { pr
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());
}
};*/
如何修复它
getter和setter方法的情况是错误的
getstockTicker应该是getstockTicker
setstockTicker应为setstockTicker
一些背景资料
您的PropertyValueFactory在以下情况下保持不变:
new PropertyValueFactory<Stock,String>("stockTicker")
PropertyValueFactory使用反射来查找相关的访问器。首先,它将尝试使用stockTickerProperty访问器,如果没有,则返回getter和setter。建议提供属性访问器,因为这样您将自动启用表以观察基础模型中的属性,并在基础模型更改时动态更新其数据。如何修复它
getter和setter方法的情况是错误的
getstockTicker应该是getstockTicker
setstockTicker应为setstockTicker
一些背景资料
您的PropertyValueFactory在以下情况下保持不变:
new PropertyValueFactory<Stock,String>("stockTicker")
PropertyValueFactory使用反射来查找相关的访问器。首先,它将尝试使用stockTickerProperty访问器,如果没有,则返回getter和setter。建议提供属性访问器,因为这样您将自动启用表以观察基础模型中的属性,随着底层模型的更改,动态更新它的数据。将Getter和Setter方法放在所有元素的数据类中。将Getter和Setter方法放在所有元素的数据类中。最令人恼火的是:我的所有代码都使用这样的方法命名约定。所有这些都很好,除了我花了几天时间在这个问题上的那个片段。。。我的上帝!!谢谢@为什么盖特打了两次电话?而不仅仅是人的目标?对不起,不知道,我不明白你在问什么。您可能想问一个新问题。关于这一点,还有一点,因为JavaFx使用反射来查找方法,所以请确保这些方法具有公共访问权限。最令人恼火的是:我的所有代码都使用这样的方法命名约定。所有这些都很好,除了我花了几天时间在这个问题上的那个片段。。。我的上帝!!谢谢@为什么盖特打了两次电话?而不仅仅是人的目标?对不起,不知道,我不明白你在问什么。您可能想问一个新问题。关于这一点,还有一点,因为JavaFx使用反射来查找方法,请确保这些方法具有公共访问权限。您能更具体一点吗?请提供不需要提问者澄清的答案。更多阅读。你能更具体一点吗?请提供不需要提问者澄清的答案。更多阅读。