プログラムでTableView
の行を選択/フォーカスしようとしています。
行を選択できますが、focused(強調表示されていません)としてレンダリングされません。以下のコードの多くの組み合わせを試しましたが、何も機能しないようです。
table.getSelectionModel().select(0);
table.focusModelProperty().get().focus(new TablePosition(table, 0, column));
table.requestFocus();
プログラムで行を強調表示することは可能ですか?
JavaFX2.2.21を使用しています
最初にテーブルフォーカスのリクエストを入れてから、全体をrunLater
でラップしてみてください。
Platform.runLater(new Runnable()
{
@Override
public void run()
{
table.requestFocus();
table.getSelectionModel().select(0);
table.getFocusModel().focus(0);
}
});
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);
}
});
ListView
とTableView
の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);
}
table.getSelectionModel().select(0);
は私のために働きます。多分問題はあなたのCSSにありますか?