web-dev-qa-db-ja.com

JavaFX 2:プログラムでテーブル行にフォーカスする方法は?

プログラムでTableViewの行を選択/フォーカスしようとしています。

行を選択できますが、focused(強調表示されていません)としてレンダリングされません。以下のコードの多くの組み合わせを試しましたが、何も機能しないようです。

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

プログラムで行を強調表示することは可能ですか?

JavaFX2.2.21を使用しています

13
brnzn

最初にテーブルフォーカスのリクエストを入れてから、全体をrunLaterでラップしてみてください。

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

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);
    }
});
1
trilogy

ListViewTableViewの2つのコンポーネントがあります。 ListViewのアイテムをクリックすると、フォーカスと選択がTableViewに移動し、選択したコンポーネントをTableViewにレンダリングします。これを達成するために、私はそれを次のように行いました:

void listViewClickHandler(MouseEvent e){
    A a = listView.getSelectionModel().getSelectedItem();
    if(a != null){
        // some stuff

        // move focus & selection to TableView
        table.getSelectionModel().clearSelection(); // We don't want repeated selections
        table.requestFocus();                       // Get the focus
        table.getSelectionModel().selectFirst();    // select first item in TableView model
        table.getFocusModel().focus(0);             // set the focus on the first element
        tableClickHandler(null);                    // render the selected item in the TableView
}

void tableClickHandler(MouseEvent e){
    B b = table.getSelectionModel().getSelectedItem();
    render(b);
}
1
Eldelshell

table.getSelectionModel().select(0);は私のために働きます。多分問題はあなたのCSSにありますか?

0
Jens Piegsa