JavaFX如何从Tableview中获取选定行的数据

JavaFX How to get data of selected row from Tableview

我想从一个选定的行中获取数据

我有这个小代码

Stlpce aktualne = (Stlpce) tableview_objednavka.getSelectionModel().getSelectedItems();
    double aktcena = aktualne.getCena();

但是当我 运行 应用程序时我得到这个错误

Caused by: java.lang.ClassCastException: javafx.scene.control.TableView$TableViewArrayListSelectionModel cannot be cast to sample.Stlpce

我使用场景生成器创建 TableView。

你能帮帮我吗?

这已解决 - 问题是,我有 getSelectedItems(); 而不是 getSelectedItem();

异常的含义很明确: http://docs.oracle.com/javase/7/docs/api/java/lang/ClassCastException.html

您进行的方法调用 (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableView.TableViewSelectionModel.html#getSelectedItems--) returns 对

的引用
ObvservableList<T>

Stlpe 没有的对象 implement/extend 因此 Stlpe 引用不能指向这样的对象。

Stlpe class 是您的 ObservableList 的类型 class 吗?如果是这样,也许您需要在列表中找到 Stlpe 对象:

if (returnedList.size() > 0) {
    Stlpe item = returnedList.get(0);
}

如果你只关心选择了哪一行,假设你有一个TableView,你可以简单地使用:

List selected = selectionModel.getSelectedItems();

或者如果您的 table 只允许单行选择:

SomeObject selected = selectionModel.getSelectedItem();

System.out.println(selected.getName());

尝试 100% 工作...

或尝试这个以更好地理解 Get row data from TableView

在您的声明中,TableView 应该转换为您的对象 例如:TableView <Stlpce> tableview_objednavka;