我的计划中有Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("android.intent.extras.CAMERA_FACING",android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);
startActivityForResult(intent, RESULT_LOAD_CAMERA);
和headers.setContentType(MediaType.parseMediaType("application/pdf;charset=utf-8"));
。只要单击此TreeView
,它就会在TreeView中最后选择的元素之后添加一个新元素。
例如,如果我选择“Test Action”元素并单击“Add”按钮,它应该在“Test Action”之后但在“Test Condition”之前添加另一个Button
。
我编写了代码,以便跟踪最后选择的元素:
Button
但是,通过使用TreeItem,“current”,我没有办法在TreeView中找到它的索引。
我可以这样做:
TreeItem
那么有没有办法在@FXML
TreeView<String> view;
TreeItem<String> current = root;
view.selectionModelProperty().addListener(new ChangeListener<MultipleSelectionModel<TreeItem<String>>>() {
@Override
public void changed(ObservableValue<? extends MultipleSelectionModel<TreeItem<String>>> observable,
MultipleSelectionModel<TreeItem<String>> oldValue,
MultipleSelectionModel<TreeItem<String>> newValue) {
current = newValue.getSelectedItem();
}
});
中找到孩子的索引?
答案 0 :(得分:3)
类TreeItem
有一个方法getParent
,它返回指定TreeItem
的父级。这个父级也是TreeItem
,有一个方法getChildren
来获取孩子TreeItem
;返回的TreeItem
中ObservableList
s的顺序是您在屏幕上可以看到的实际顺序,因此您可以在检索到add
之后在indexOf()
的特定索引中插入新元素带有{{3}}的列表中元素的索引。
您可以在Button
的事件监听器中处理当前选择:
Button b = new Button("Add");
b.setOnAction(event -> {
// Get the selected item
TreeItem<String> selectedItem = treeView.getSelectionModel().getSelectedItem();
// If there is no selection or the root is selected do nothing
if (selectedItem == null || selectedItem == rootNode)
return;
// Otherwise get the index of the Node from the children of its parent
// and append the new item right after it
int index = selectedItem.getParent().getChildren().indexOf(selectedItem);
selectedItem.getParent().getChildren().add(index+1, new TreeItem<>("New Item"));
});
如果您已经跟踪当前选择:
修改只是使用current
(这就是你如何命名变量)而不是在处理程序中获取选择:
Button b = new Button("Add");
b.setOnAction(event -> {
// If there is no selection or the root is selected do nothing
if (current == null || current == rootNode)
return;
// Otherwise get the index of the Node from the children of its parent
// and append the new item right after it
int index = current.getParent().getChildren().indexOf(current);
current.getParent().getChildren().add(index+1, new TreeItem<>("New Item"));
});