呼唤
File picturesDir = Services.get(StorageService.class)
.flatMap(s -> s.getPublicStorage("Pictures"))
.orElseThrow(() -> new RuntimeException("Error retrieving public storage"));
for (File pic : picturesDir.listFiles()) {
System.out.println("file " + pic.getName());
}
Run Code Online (Sandbox Code Playgroud)
没有列出任何文件。我认为它应该列出 iPhone 上我的图片库中的所有文件。
调用 s.getPublicStorage("") 它会列出两个文件夹:gluon、Pictures。
我怎样才能正确访问它?
我有:
public class TaskCell extends ListCell<Activity>...
..
private TextField textField = new TextField();
private HBox content = new HBox(..textField..);
@Override
public void updateItem(final Activity activity, boolean empty) {
super.updateItem(activity, empty);
...
textField.setText(activity.getTitle());
setGraphic(content);
}
Run Code Online (Sandbox Code Playgroud)
内容是一个带有 TextField 和其他控件的 HBox。
通过单击 或 通过以下方式选择列表项:
listView.getSelectionModel().select(1);
Run Code Online (Sandbox Code Playgroud)
起作用并选择整个项目。现在我想使用 Key.Tab 选择内部 TextField 进行编辑。这怎么可能?问题不是关于 KeyEvents,而是如何在所选 ListItem 上的 TextField(任何控件)上获取 requestFocus。
最好且仅部分有效的解决方案:
TaskCell selectedTaskCell = (TaskCell) listView.lookup(".cell:selected");
HBox hBox = (HBox) selectedTaskCell.getGraphic();
TextField textField = (TextField) hBox.getChildren().get(1);
textField.requestFocus();
textField.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
这确实通过调试得到了正确选择的单元格。但是 requestFocus/setVisible 总是在第一个列表项上完成。从逻辑上讲,随着 ListCell 被重用..如何将焦点放在所选项目上?谢谢。