JavaFX 2:如何以编程方式聚焦表行?

2022-09-04 08:31:15

我正在尝试以编程方式选择/聚焦一行 a。TableView

我可以选择一行,但它没有被渲染为焦点(未突出显示)。我已经尝试了下面代码的许多组合,但似乎没有任何效果。

table.getSelectionModel().select(0);
table.focusModelProperty().get().focus(new TablePosition(table, 0, column));
table.requestFocus();

是否可以以编程方式突出显示行?

我使用的是 JavaFX 2.2.21


答案 1

尝试先提出对表焦点的请求,然后将整个内容包装在 .runLater

Platform.runLater(new Runnable()
{
    @Override
    public void run()
    {
        table.requestFocus();
        table.getSelectionModel().select(0);
        table.getFocusModel().focus(0);
    }
});

答案 2

table.getFocusModel().focus(0);是不需要的,但我也会添加。scrollTo

Java 8:

Platform.runLater(() ->
  {
      table.requestFocus();
      table.getSelectionModel().select(0);
      table.scrollTo(0);
  });

Java 7:

Platform.runLater(new Runnable()
{
    @Override
    public void run()
    {
        table.requestFocus();
        table.getSelectionModel().select(0);
        table.scrollTo(0);
    }
});