我是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”程序里的“设备”。最好的方法是什么?
暂无答案!
目前还没有任何答案,快来回答吧!