0

有没有办法根据在 JavaFX 的 tableView 中单击的记录来填充文本字段?
我想将我在表格视图中单击的记录显示到文本字段。
有什么建议可以帮助我吗?

4

2 回答 2

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.
   }
});
于 2013-07-03T04:12:10.483 回答
0

您需要向表视图添加一个活动侦听器,以及一个控制它应该做什么的方法。

因此在您的 FXML 文件中,您将让您的表格视图使用方法名称“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>

接下来在您的控制器中,您需要添加表格视图和顶部的字段,然后是 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。

于 2021-03-17T21:05:59.947 回答