确实如此,我单击了所填充的行,但看不到它们中的任何值-在这种情况下为字符串值。 [我只是为了更清楚地编辑了此内容]
我有一个不同的项目,在该项目下它可以使用相同的数据模型。我在做什么错?
这是代码。最后的注释代码似乎可以正常工作。我检查了是否存在通常的错误-创建新的列实例或新的tableview实例。没有。请帮忙!
//简单数据模型
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());
}
};*/
#1 楼
如何修复您的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访问器,如果不存在该访问器,则退回给获取器和设置器。建议提供一个属性访问器,因为这样您将自动使您的表能够观察基础模型中的属性,并随着基础模型的更改动态更新其数据。
#2 楼
将Getter和Setter方法放入所有元素的数据类中。评论
您能具体一点吗?请提供不需要提问者澄清的答案。有关更多信息,请参见如何回答。
–法比安·舒尔茨(Fabian Schultz)
16年12月29日在22:12
评论
这是最吸引人的部分:我的所有代码都使用类似的方法命名约定。全部(除了那一个片段),我在这个问题上花了几天的时间……我的表皮上帝!谢谢!!!!
–纳普兹·泰森(Nepze Tyson)
2013年6月11日13:46
@jewelsea为什么getter叫过两次?而不是人的对象?
–阿西夫·穆斯塔克(Asif Mushtaq)
16年6月12日在22:23
抱歉,未知,我不明白您的要求。您可能想问一个新问题。
–jewelsea
16年6月12日在22:46