私はミリ秒ごとにアクティブなソートと新しい行の挿入を備えたjavafx tableviewを使用しています...
この機能が欲しい:
行を選択した場合は、新しい行が挿入されたときに表示されたままになる必要があります (つまり、テーブルの現在の表示部分から上下に移動しないでください)。
私も同じ問題を抱えていました。cellEventHandlerクラスを使用して、セルがテーブルで選択されたときに起動するEventHandlerインターフェイスを実装し、最後に選択された行インデックスを変数に設定できます。クラスは以下の通りです。
public class CellEventHandler implements EventHandler<MouseEvent>
{
CellEventHandler()
{
}
@Override
public void handle(MouseEvent t)
{
TableCell c;
c = (TableCell) t.getSource();
c.getIndex();
PanelController.selectedItem = c.getIndex();
}
}`
次に、PanelController クラスのテーブルのテーブル クラス レンダーは次のようになります。
typeCol.setCellFactory(new Callback<TableColumn<tableModel, String>, TableCell<tableModel, String>>()
{
@Override
public TableCell<tableModel, String> call(TableColumn<tableModel, String> tableColumn)
{
LableCell lableCell = new LableCell(Pos.CENTER, true);
lableCell.addEventFilter(MouseEvent.MOUSE_CLICKED, new CellEventHandler());
return lableCell;
}
});
「selectedItem」フィールドは、panelController クラスで static フィールドとして宣言する必要があります。次に、テーブルの行データを更新するときに、その「selectedItem」をテーブルで選択済みとして設定する必要があります。
myTable.getSelectionModel().select(selectedItem);