自动刷新表格时,Javafx TableView仍会选择最后一行

自动刷新表格时,Javafx TableView仍会选择最后一行,java,javafx,tableview,Java,Javafx,Tableview,我正在使用Javafx TableView选择表中的一行,当表自动刷新(表每秒自动刷新)时,我选择的行不会被选中 即使表格是自动刷新的,我应该怎么做才能使我选择的行仍然处于选中状态 这是我的密码: 接口\u adminController.java public class Interface_adminController implements Initializable { @FXML private TableView<Antrian> antrianTable

我正在使用Javafx TableView选择表中的一行,当表自动刷新(表每秒自动刷新)时,我选择的行不会被选中

即使表格是自动刷新的,我应该怎么做才能使我选择的行仍然处于选中状态

这是我的密码:

接口\u adminController.java

public class Interface_adminController implements Initializable {
    @FXML
    private TableView<Antrian> antrianTable;
    @FXML
    private TableColumn<Antrian, Integer> id;
    @FXML
    private TableColumn<Antrian, String> tanggal;
    @FXML
    private TableColumn<Antrian, Integer> no_antrian;
    @FXML
    private TableColumn<Antrian, String> jam_ambil;
    @FXML
    private TableColumn<Antrian, String> jam_panggil;
    @FXML
    private TableColumn<Antrian, Boolean> boolean_antrian;
    @FXML
    private Button panggil_antrian;
    @FXML
    private Text txtHitung;
    @FXML
    private Text txtNoDipanggil;

    private Antrian antrian;

    ObservableList<Antrian> oblist = FXCollections.observableArrayList();

    Timeline updatePerdetik;
    int jumlahAntrian = 0;
    String antrianDipanggil = "";

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        oblist.clear();
        try {
            Connection conn = connection.connection();
            ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM antrian");

            while(rs.next()){
                oblist.add(new Antrian(rs.getInt("id"), 
                        rs.getString("tanggal"), 
                        rs.getInt("no_antrian"), 
                        rs.getString("jam_ambil"), 
                        rs.getString("jam_panggil"),
                        rs.getBoolean("boolean_antrian")));
            }
        } catch (SQLException ex) {
            Logger.getLogger(Interface_adminController.class.getName()).log(Level.SEVERE, null, ex);
        }

        System.out.println(no_antrian + " " + jam_ambil);
        id.setCellValueFactory(new PropertyValueFactory<>("id"));
        antrianTable.setItems(oblist);
        antrianTable.setPlaceholder(new Label("Tidak Ada Antrian"));

        antrianTable.setOnMouseClicked((MouseEvent event) -> {
            if(event.getButton().equals(MouseButton.PRIMARY)){
                antrianDipanggil = antrianTable.getSelectionModel().getSelectedItem().toString();
                txtNoDipanggil.setText(antrianDipanggil);
            }
        });

        updatePerdetik = new Timeline(new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                jumlahAntrian = antrianTable.getItems().size();
                txtHitung.setText(Integer.toString(jumlahAntrian));
                showItem();
                System.out.println("Jalan");
            }
        }));
        updatePerdetik.setCycleCount(Timeline.INDEFINITE);
        updatePerdetik.play();
    }
}
公共类接口\u adminController实现可初始化{
@FXML
私人桌面视图;
@FXML
私有表列id;
@FXML
私人台柱Tangal;
@FXML
私人表格第1栏;
@FXML
私人餐桌;
@FXML
私人桌椅;
@FXML
私有表列布尔值;
@FXML
私人按钮panggil_antrian;
@FXML
私人文本txtHitung;
@FXML
私有文本txtNoDipanggil;
私人安特里安;
ObservableList oblist=FXCollections.observableArrayList();
时间表更新Perdetik;
int jumlahAntrian=0;
字符串antrianDipanggil=“”;
@凌驾
公共void初始化(URL、ResourceBundle rb){
明确的义务;
试一试{
连接连接=连接。连接();
ResultSet rs=conn.createStatement().executeQuery(“从antrian中选择*);
while(rs.next()){
新增义务(新安特里安(rs.getInt(“id”),
rs.getString(“tanggal”),
rs.getInt(“无安特里安”),
rs.getString(“jam_ambil”),
rs.getString(“jam_panggil”),
rs.getBoolean(“boolean_antrian”);
}
}catch(SQLException-ex){
Logger.getLogger(Interface_adminController.class.getName()).log(Level.SEVERE,null,ex);
}
System.out.println(无antrian+“”+jam\u ambil);
id.setCellValueFactory(新属性ValueFactory(“id”);
antrianTable.setItems(义务项);
setPlaceholder(新标签(“Tidak Ada Antrian”);
antrianTable.setOnMouseClicked((MouseeEvent事件)->{
if(event.getButton().equals(MouseButton.PRIMARY)){
antrianDipanggil=antrianTable.getSelectionModel().getSelectedItem().toString();
txtNoDipanggil.setText(antrianDipanggil);
}
});
updatePerdetik=新的时间线(新的关键帧(Duration.seconds(1),new EventHandler()){
@凌驾
公共无效句柄(ActionEvent事件){
jumlahAntrian=antrianTable.getItems().size();
setText(Integer.toString(jumlahAntrian));
showItem();
System.out.println(“Jalan”);
}
}));
updatePerdetik.setCycleCount(Timeline.unfinite);
updatePerdetik.play();
}
}
/代表@Zephyr发帖/

你可以用

tableView.getSelectionModel().select() 

在表刷新后重新选择行。
select()
方法将接受行索引或对象参数

请…您可以使用
tableView.getSelectionModel().select()
在表刷新后重新选择行。
select()
方法将接受行索引或
Object
参数。