JavaFX使用表索引获取单元格数据的最简单方法

JavaFX使用表索引获取单元格数据的最简单方法,javafx,tableview,Javafx,Tableview,在javafx中,有没有最简单的方法可以不用cellfactory函数而使用表索引值来获取tableview的单元格数据 getValueAt(1,2);//1=column number 2=row number 因此,我可以访问列=1和行=2上的单元格数据。提前感谢您可以使用表列获取可观察值,并在其上使用getValue: public static Object getValueAt(TableView table, int column, int row) { return

在javafx中,有没有最简单的方法可以不用cellfactory函数而使用表索引值来获取tableview的单元格数据

  getValueAt(1,2);//1=column number 2=row number

因此,我可以访问列=1和行=2上的单元格数据。提前感谢

您可以使用
表列
获取可观察值,并在其上使用
getValue

public static Object getValueAt(TableView table, int column, int row) {
    return table.getColumns().get(column).getCellObservableValue(row).getValue();
}

您可以使用
TableColumn
获取可观测值,并在其上使用
getValue

public static Object getValueAt(TableView table, int column, int row) {
    return table.getColumns().get(column).getCellObservableValue(row).getValue();
}

您还可以使用以下代码。使用鼠标选择行时

ProcessDetail pd =
 (ProcessDetail)tableDefined.getSelectionModel().getSelectedItem();
System.out.println("Value is in this row which is selected"+pd.getStatus());

您还可以使用以下代码。使用鼠标选择行时

ProcessDetail pd =
 (ProcessDetail)tableDefined.getSelectionModel().getSelectedItem();
System.out.println("Value is in this row which is selected"+pd.getStatus());


不太清楚你在这里想做什么?你能提供多一点背景吗?由于单元格是重复使用的,因此不能基于单元格访问数据。但是,您可以根据backing集合中的行获取数据。@purning-bige。这里我想使用表的索引值设置单元格的背景色。单元格工厂函数在我的表中不适用,因为这里有40多列。因此我更喜欢这种方式,就像我们在java swing jtable中所做的那样。您可以在在更新项期间创建列的cellFactory,并在其中应用css。如果没有,则在滚动表格时,你的颜色不会改变。@purning Pidge。实际上,我在tableview中显示了一份一年的出席报告。我想为单元格上的出席和缺席天数指定背景颜色。因此背景颜色不是固定的,它可能会改变。所以据我所知,我们可以对特定行或单元格使用cellfactory函数Column.但这对我来说是个难题,因为我有40多个专栏,我不太确定你想在这里做什么?你能提供多一点背景吗?由于单元格是重复使用的,因此不能基于单元格访问数据。但是,您可以根据backing集合中的行获取数据。@purning-bige。这里我想使用表的索引值设置单元格的背景色。单元格工厂函数在我的表中不适用,因为这里有40多列。因此我更喜欢这种方式,就像我们在java swing jtable中所做的那样。您可以在在更新项期间创建列的cellFactory,并在其中应用css。如果没有,则在滚动表格时,你的颜色不会改变。@purning Pidge。实际上,我在tableview中显示了一份一年的出席报告。我想为单元格上的出席和缺席天数指定背景颜色。因此背景颜色不是固定的,它可能会改变。所以据我所知,我们可以对特定行或单元格使用cellfactory函数Column.但这对我来说很困难,因为我有40多个专栏感谢你的努力,但我如何才能把它与我的table@AmeenAmi通过将所述表格作为第一个参数传递给该方法,如果“link”的意思是“use with”。或者扩展
TableView
,删除static和第一个参数,并将
table
替换为
this
,如果它绝对需要成为表的实例方法。。。在
TableView
中根本没有方法可以为您这样做。哦,我的天啊。我已经像这样实现了您的代码,String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString();System.out.println(“值”+a);,我得到了想要的结果。非常感谢much@You需要将数据存储在其他地方,并使用自定义的
cellFactory
来调整单元格的外观。请注意,在给定的时间,一个项目可能没有一个
单元格
,而
单元格
会被重复用于不同的项目,这就是为什么这样做是必要的。您可以通过这种方式获取数据,但如果您这样做,这几乎是一个设计错误的标志。由
table.getColumns().get(…)
返回的
TableColumn
是视图的一部分,因此您可以有效地从视图中检索数据,这基本上总是一个错误。你应该从模型中获取数据。谢谢你的努力,但我如何才能将其与我的table@AmeenAmi通过将所述表格作为第一个参数传递给该方法,如果“link”的意思是“use with”。或者扩展
TableView
,删除static和第一个参数,并将
table
替换为
this
,如果它绝对需要成为表的实例方法。。。在
TableView
中根本没有方法可以为您这样做。哦,我的天啊。我已经像这样实现了您的代码,String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString();System.out.println(“值”+a);,我得到了想要的结果。非常感谢much@You需要将数据存储在其他地方,并使用自定义的
cellFactory
来调整单元格的外观。请注意,在给定的时间,一个项目可能没有一个
单元格
,而
单元格
会被重复用于不同的项目,这就是为什么这样做是必要的。您可以通过这种方式获取数据,但如果您这样做,这几乎是一个设计错误的标志。由
table.getColumns().get(…)
返回的
TableColumn
是视图的一部分,因此您可以有效地从视图中检索数据,这基本上总是一个错误。您应该从模型中获取数据。