有没有办法根据在JavaFX中的tableView中单击的记录来填充文本字段?
我想将在tableview中单击的记录显示到文本字段。
有任何建议可以帮助我吗?
答案 0 :(得分:2)
以下是您的代码示例
yourTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<T>() {
@Override
public void changed(ObservableValue<? extends T> ov, T t, T t1) {
System.out.println(table.getSelectionModel().getSelectedItem());
//Code to populate your popup/window.
}
});
答案 1 :(得分:0)
您需要向表视图添加一个活动侦听器,以及一个控制它应该做什么的方法。
因此,在您的 FXML 文件中,您将让 tableview 使用方法名称“clickMe”分配鼠标单击事件:
<TableView fx:id="someTable" layoutX="322.0" layoutY="73.0" onMouseClicked="#clickMe">
<columns>
<TableColumn fx:id="someColumn1" text="someValue1" />
<TableColumn fx:id="someColumn2" text="someValue2" />
<TableColumn fx:id="someColumn3" text="someValue3" />
</columns>
</TableView>
接下来在您的控制器中,您需要添加 tableview 和顶部的字段,然后是 clickMe 方法。我假设您已经添加了列并且正在使用单元工厂来填充它们:
package YourPackage;
public class YourFXMLController{
@FXML private TableView<objectTheTableIsPopulatedWith> someTable; //make sure the name
// on the tableview and columns match your fx:id
@FXML private TableColumn someColumn1;
@FXML private TableColumn someColumn2;
@FXML private TableColumn someColumn3;
@FXML private TextField someField1;
@FXML private TextField someField2;
@FXML private TextField someField3;
//next add the clickMe method
public void clickMe(MouseEvent event) {
if (event.getClickCount() == 1) //Check for a click, change to 2 for double click
{
someField1.setText(someTable.getSelectionModel().getSelectedItem().getSomeString1());
someField2.setText(someTable.getSelectionModel().getSelectedItem().getSomeString2());
someField3.setText(someTable.getSelectionModel().getSelectedItem().getSomeString3());
}
}
}
只要您已经制作了一个由具有构造函数、setter 和 getter 的对象类构建的可观察列表。因此 getSomeString1() 方法将是您用来填充表视图值的任何 getter。