TableView列的java编辑值
我遇到了我无法解决的问题。问题是,我的TableView已经被填充,我需要匹配我的条件的单元格将值设置为零。我有一个变量korZemljiste,如果我的条件是满的,Colonovica列中的单元格需要设置为0.00
以下是我尝试过的:
if (korZemljiste < 10000)
{
tblTabela.getItems().stream().forEach((o)
-> {
colOsnovica.setCellFactory(TextFieldTableCell.forTableColumn());
colOsnovica.setOnEditCommit(
new EventHandler<CellEditEvent<Nepokretnost, Number>>() {
@Override
public void handle(CellEditEvent<Nepokretnost, Number> t) {
((Nepokretnost) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setOsnovica(t.getNewValue());
}
});});}
很抱歉,代码结尾很难看,无法正确复制
我从Oracle示例中修改了这一部分,发现错误:
error: incompatible types: no instance(s) of type variable(s) S exist so that Callback<TableColumn<S,String>,TableCell<S,String>> conforms to Callback<TableColumn<Nepokretnost,Number>,TableCell<Nepokretnost,Number>>
colOsnovica.setCellFactory(TextFieldTableCell.forTableColumn());
其中S是一个类型变量: S扩展方法forTableColumn()中声明的对象
error: incompatible types: Number cannot be converted to double
).setOsnovica(t.getNewValue());
我的TableView使用<Nepokretnost, Number>
表单
注意:我想我不需要Oracle站点上的这个例子,因为我不想手动更改列中单元格的内容,我只想将它们设置为0.00
有什么简单的解决方案吗
提前谢谢
# 1 楼答案
对于第一个错误,由于表列类型不是} 的无参数版本。潜在的问题是,要编辑单元格,文本字段提供一个} 提供一个转换器:
String
,因此不能使用^{String
,单元格中的数据是一个Number
。您需要使用overloaded form of ^{对于第二个错误,只需将
t.getNewValue()
(返回Number
)替换为t.getNewValue().doubleValue()
(获取Number
的double
表示)# 2 楼答案
@james-d
嗯,我错了。类很简单,如下所示:
我没意识到有必要在这里下课。我之前刚开始申请。在这里,我刚刚更改了JTableView字段的内容。这有点不同,谢谢你的帮助
我发布了应用程序的屏幕截图。在屏幕截图上,我已经在TableView中添加了我想要的元素。我发布的有问题的代码是Calculate(бачааааа)按钮事件处理程序的一部分。在本例中,计算应将字段аааааа的内容更改为0.00