Javafx TableView在表格自动刷新时仍然选择最后选择的行

标签 java javafx tableview

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

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

这是我的代码:

Interface_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();
    }
}

最佳答案

/代表@Zephyr发帖/

您可以使用

tableView.getSelectionModel().select() 

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

关于Javafx TableView在表格自动刷新时仍然选择最后选择的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318801/

相关文章:

JavaFX Web View 中的 Javascript

javaFX 帧图像

tableview - javafx8 TableView Multiselection 将所选项目之一返回为 null

java - Equinox 与 SWT/Jface

java - (Java) 如何使用有界通配符泛型实现接口(interface)方法?

任务栏中的 JavaFX 图标质量

ios - 来自 .xib 的表头 View

java - 我的表格 View 中的表格单元格为空。 JavaFX + 场景构建器

java - 父面板未正确重绘

java - ASN.1整数转普通整数