- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。
确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进行了编辑以使其更清晰]
我有一个不同的项目,它在相同类型的数据模型下工作。我做错了什么?
这是代码。最后的注释代码似乎可以工作。我检查了是否存在常见错误 - 创建新的列实例或新的 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);
}
}
// Controller 类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());
}
};*/
最佳答案
而不是:
aColumn.setCellValueFactory(new PropertyValueFactory<Appointment,LocalDate>("date"));
写:
aColumn.setCellValueFactory(cellData -> cellData.getValue().dateProperty());
有关更多信息,请参阅此答案:
<小时/>上面概述的 lambda 解决方案是首选,但如果您希望使用 PropertyValueFactory,此替代解决方案提供了相关信息。
如何修复
你的 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 使用反射来查找相关的访问器(这些访问器应该是公共(public)的)。首先,它将尝试使用 stockTickerProperty 访问器,如果不存在,则回退到 getter 和 setter。建议提供属性访问器,因为这样您将自动使表能够观察底层模型中的属性,并随着底层模型的更改动态更新其数据。
关于javafx-2 - Javafx PropertyValueFactory 未填充 Tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46878130/
我有一个对象的 TableView,其中包含映射到其他类型的其他对象的 Id。我需要一个 TableColumn,它不显示 id,而是显示映射到 id 的对象。我想我可以通过创建自己的 Propert
我有两个包,一个用于对象,另一个用于创建 GUI。我正在尝试创建一个 TableView在 JavaFX 中,我必须使用 PropertyValuesFactory<>(property)来获取对象的
总结: 我正在尝试通过按下“重新加载按钮”将数据从 ArrayList 添加/重新加载到 TableView(目前我只是用 TableView 的一列对其进行测试)。因为 TableView 需要一个
我正在尝试使用 TableView 创建一个表,并根据 User 对象列表以编程方式填充它。 User 有三个变量,nameProperty (String), rankProperty (Enum
我正在尝试从 fxml 文件填充示例 javafx TableView。 这是我的 Controller 方法: public class TestController implements Init
我正在尝试使用 TableView 创建一个表并根据 Actors 对象列表填充它。 Actor 模型如下所示。 public class Actor { private SimpleInte
这让我困惑了一段时间,我似乎无法掌握它。我正在使用 Cell Value Factory 填充一个简单的单列表,但它没有填充到表中。 确实如此,我单击了填充的行,但在其中没有看到任何值 - 在本例中为
不要将 propertyvaluefactory 指向对象的属性,如下所示: traineeCol.setCellValueFactory(new PropertyValueFactory("sumN
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。 确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。 确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进
这件事让我困惑了一段时间,我似乎无法理解它。我正在使用单元格值工厂填充一个简单的单列表,但它不会填充在表中。 确实如此,我单击填充的行,但在其中没有看到任何值 - 在本例中为字符串值。 [我刚刚对此进
今天,我在尝试了解有关 JavaFX 和 Java 的更多信息时遇到了另一件我不太了解的事情。 引用以下教程(我试图将原理应用于组织者): JavaFX 8 Tutorial 我将简要概述我有问题的特
在我的 JavaFx 项目中,我有一个带有几个 View 的场景。对于窗口的页脚,我有一个从 TableView 扩展的类: public class FooterView extends Table
来自 eclipse 帮助: setCellValueFactory 需要将单元格值工厂设置为指定如何填充单个 TableColumn 中的所有单元格。单元值工厂是一个提供 CellDataFeatu
我是一名优秀的程序员,十分优秀!