List<EcpiTree> ecpiTrees = ecpiTreeMapper.selectList(null); 的数据拷贝到 List<TreeItem> treeItemList = new ArrayList<TreeItem>();
时间: 2024-01-01 20:51:10 浏览: 25
可以使用 Java 8 的流操作来进行转换:
```java
List<EcpiTree> ecpiTrees = ecpiTreeMapper.selectList(null);
List<TreeItem> treeItemList = ecpiTrees.stream()
.map(tree -> new TreeItem(tree.getId(), tree.getName(), tree.getParentId()))
.collect(Collectors.toList());
```
这里假设 `TreeItem` 有一个带参数的构造函数来创建 `TreeItem` 对象,参数依次为 `id`、`name` 和 `parentId`。使用 `map` 操作将 `EcpiTree` 对象转换为 `TreeItem` 对象,然后使用 `collect` 操作将其收集到一个新的 `List` 中。
相关问题
<div class="treeItem" style="margin-top: -5px;"> <div class="itemhead"> <i class="fa fa fa-file-text-o"></i> <span>关键字</span> <div class="collspand fa fa-angle-right"></div> <div class="jstree"> <ul class="jstree-container-ul jstree-children"> <li class="jstree-node jstree-leaf" *ngFor="let tss of res.data.statistics.case_year_stats.buckets" > <i class="jstree-icon jstree-ocl"></i> <a class="jstree-anchor" href="#"></a> {{tss.key.slice(0,4)}}年({{tss.doc_count}})</li> </ul> </div> </div> </div>为什么treeitem的高度没有被撑开
这是一个HTML代码段,其中包含一个树形结构的列表,用于显示关键字和相关统计数据。该列表使用了jstree插件来实现树形结构的展示。其中,*ngFor指令用于循环遍历数据,并将每个数据项渲染为一个列表项。
javafx 怎么实现拖动TreeItem
要在 JavaFX 中实现拖放 `TreeItem`,可以使用 `TreeView` 的 `setCellFactory` 方法来自定义每个 `TreeItem` 的外观和行为。以下是一个简单的实现:
```java
final TreeView<String> treeView = new TreeView<>();
treeView.setRoot(root); // root 是根节点
treeView.setCellFactory(new Callback<TreeView<String>, TreeCell<String>>() {
@Override
public TreeCell<String> call(TreeView<String> tv) {
TreeCell<String> cell = new TreeCell<String>() {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
}
};
cell.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Dragboard db = cell.startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putString(cell.getItem());
db.setContent(content);
event.consume();
}
});
cell.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
if (event.getGestureSource() != cell && event.getDragboard().hasString()) {
event.acceptTransferModes(TransferMode.MOVE);
}
event.consume();
}
});
cell.setOnDragEntered(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
if (event.getGestureSource() != cell && event.getDragboard().hasString()) {
cell.setOpacity(0.3);
}
}
});
cell.setOnDragExited(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
cell.setOpacity(1);
}
});
cell.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasString()) {
TreeItem<String> draggedItem = new TreeItem<>(db.getString());
TreeItem<String> parent = treeView.getSelectionModel().getSelectedItem();
parent.getChildren().add(draggedItem);
success = true;
}
event.setDropCompleted(success);
event.consume();
}
});
return cell;
}
});
```
这个实现中,`setOnDragDetected` 方法设置了当用户开始拖动一个节点时要执行的操作,`setOnDragOver` 方法设置了当用户将一个节点拖到另一个节点上时要执行的操作,`setOnDragDropped` 方法设置了当用户松开鼠标时要执行的操作。此外,还设置了 `setOnDragEntered` 和 `setOnDragExited` 方法以改变节点的外观。