如何在连接新设备时自动加载选项框?

t1rydlwq  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(141)

我是javafx的新手,我正在尝试更新choicebox,当新设备如flash卡连接时。我使用周期为500毫秒的scheduleservice进行操作。每500毫秒之后,我会得到一个可移动设备的列表,并将它们添加到ObservalList:

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    ScheduledService<List<String>> service = getListOfDevices();
    service.setPeriod(Duration.millis(500));
    service.start();
    service.setOnSucceeded(e -> {
        Platform.runLater(() -> flashCardObservableList.setAll(service.getLastValue()));

    });

    nckCardList.setItems(flashCardObservableList);
}

private ScheduledService<List<String>> getListOfDevices() {
    return new ScheduledService<List<String>>() {
        @Override
        protected Task<List<String>> createTask() {
            return new Task<List<String>>() {
                @Override
                protected List<String> call() throws Exception {
                    String result = usb.GetDriveInfo();
                    List<FlashCard.DriveInfo> drives;
                    List<String> diskLetters = new ArrayList<>();
                    if (result.isEmpty() || result == null) return diskLetters;
                    drives = FlashCard.deserialize(result);
                    for (FlashCard.DriveInfo d : drives) {
                        diskLetters.add(d.getFlashName());
                    }
                    return diskLetters;
                }
            };
        }
    };
}

为了获取设备列表,我使用了dll,在这个dll中我使用了driveinfo.getdrives()方法。但每500毫秒,我的选择框就会更新一次,我什么都选不到。我想让它看起来像“rufus”程序里的“设备”。最好的方法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题