使用javaFx的TreeTableView

用javafx写一个单机版的小项目。有一个功能用到了treeView组件。

该模块的功能是:将从数据库查询得到的内容赋值给treeView作为他的子节点,显示出来。每添加一个节点,都需要存贮一个name域和id域,但是treeItem.setValue(name)只能存储一个值作为文本内容,那怎么操作可以额外放置一个id域。

度娘也没有可用的解决方案。那就只有换一种方式去处理了。既然是树形结构,那用treetableview也可以实现。treeTableview里可以放一个表格。

下面是我的实现方法部分代码。

......

for ( Orders order:projects ){
    TreeDatas treeData = new TreeDatas(order.getName(),order.getId());
    root.getChildren().add(new TreeItem<>(treeData));
}

TreeTableColumn<TreeDatas,String> nameColumn = new TreeTableColumn<>("项目列表导航");
TreeTableColumn<TreeDatas,String> idColumn = new TreeTableColumn<>();
nameColumn.setCellValueFactory((TreeTableColumn.CellDataFeatures<TreeDatas,String> param)->new ReadOnlyStringWrapper(param.getValue().getValue().getName()));
idColumn.setCellValueFactory((TreeTableColumn.CellDataFeatures<TreeDatas,String> param)->new ReadOnlyStringWrapper(param.getValue().getValue().getId()));
nameColumn.setPrefWidth(300);//
//以下四行将id列隐藏。
idColumn.setPrefWidth(0);
idColumn.setMaxWidth(0);
idColumn.setMinWidth(0);
idColumn.setVisible(false);
/////
tree = new TreeTableView(root);
tree.getColumns().setAll(nameColumn,idColumn);

.说明:Orders,TreeDatas都是我定义的类。projects是Orders类型的数据库的结果集

import javafx.beans.property.SimpleStringProperty;

public class TreeDatas {
    private SimpleStringProperty name;
    private SimpleStringProperty id;

    public TreeDatas(String name, String id) {
        this.name = new SimpleStringProperty(name);
        this.id = new SimpleStringProperty(id);
    }
    public String getName() {
        return name.get();
    }
    public String getId() {
        return id.get();
    }
}

.....

结果截图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值