`
傅庆岩
  • 浏览: 91603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javafx实现树结构treeview

阅读更多
如果我没记错,javafx1.2是不支持treeview的,为了实现一个treeview,还借用了jfxtras组织的一个框架,1.3提供了对treeview的支持,当时一个叫Rakesh Menon的阿三哥在他的博客上http://rakeshmenonp.wordpress.com/2010/05/10/javafx-1-3-treeview/发表了如何利用treeview来读取一个系统目录结构,展示端他用的是以当前目录作为书节点名,并对当前节点进行循环,如何依照给定的xml文件进行操作,把文件内容进行树状展示,遇到了一个展示内容方面的问题,对此,我对TreeItem进行了扩展,通过对这个类的扩展增加展示元素属性,并利用传统的dom4j方式对xml文件进行读取。下面是我的实现:
import javafx.scene.CustomNode;
import javafx.scene.Node;
import com.javafx.preview.control.TreeView;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.Element;
import com.javafx.preview.control.TreeItemBase;
import javafx.scene.Group;
import javafx.scene.Cursor;
/**
 * @author fuqingyan
 */
public class TreeViewNode extends CustomNode {

    public var width: Number;
    public var height: Number;
    var reader: SAXReader = new SAXReader();
    var doc: Document = reader.read("{__DIR__}test.xml");
    var tree: TreeView = TreeView {
                cursor: Cursor.HAND
                root: TreeItemExt {
                    data: doc.getRootElement().getName()
                    element: doc.getRootElement()
                    expanded: false
                    isLeaf: isLeaf
                    createChildren: createChildren;
                }
                width: bind width / 5
                height: bind height
            }

    override public function create(): Node {
        Group {
            content: bind [
                 tree     ]
        }
    }

    function createChildren(item: TreeItemBase): TreeItemBase[] {

        def itemEx = item as TreeItemExt;
        def elm = itemEx.element as Element;
        if (elm.elements().size() > 0) {
            return for (e in elm.elements()) {
                        var binds = e as Element;
                        TreeItemExt {
                            data: binds.attributeValue("name");
                            element: binds
                            createChildren: createChildren;
                            isLeaf: isLeaf;
                        }
                    };
        }
        return [];
    }
    function isLeaf(item: TreeItemBase): Boolean {
        def itemEx = item as TreeItemExt;
        def elm = itemEx.element as Element;
        return elm.elements().size() < 1;
    } 

下面是扩展TreeItem
import com.javafx.preview.control.TreeItem;
import org.dom4j.Element;

/**
 * @author fuqingyan
 */

public class TreeItemExt extends TreeItem {

    public var element: Element;
}


稍微做下说明,TreeItem TreeView TreeItemBase这几个类之间的关系看一下api文档,如果重写了createChildren方法,就一定要重写isLeaf。
fx方面的ide,NetBeans的比Eclipse的要好一点,我个人实践后的体会。
给定一个xml格式的文件,读取后就可以树状展示出来了,有空继续写一下操作treeview的节点进行交互。
分享到:
评论

相关推荐

    javafx treeview 树形菜单渲染公用接口

    javafx treeview 树形菜单一行代码渲染接口源码,通过一个sql查询结果集,调用该源码公共接口,直接渲染模型。该算法,解决了遍历的空间复杂度,时间复杂度问题,合理利用java的对象引用概念。灵活指向父子对象,...

    JavaFX TreeView数据库加载Node的实例

    JavaFX的TreeView组件是用于构建层次结构数据视图的强大工具,它可以用来展示树形结构的信息,如文件系统、组织结构等。在这个实例中,我们将深入探讨如何将数据库中的数据加载到JavaFX的TreeView中,创建一个动态的...

    Java目录树控件

    总的来说,Java目录树控件的实现涉及到文件系统遍历、树结构数据模型的创建以及Swing或JavaFX组件的使用。通过理解这些概念,开发者能够创建出交互式的文件系统浏览器,帮助用户在Java应用程序中管理他们的文件和...

    java-根据过滤条件显示树形结构

    1. **构建树结构**:首先,你需要创建一个根节点,然后根据数据源递归地添加子节点。每个节点都应有一个属性用于存储过滤所需的数据。 2. **定义过滤器**:创建一个Filter类,其中包含过滤条件和一个方法,该方法...

    treeview绑定数据代码

    在.NET开发环境中,TreeView控件是一种常用的用户界面元素,它以树形结构显示数据,常用于网站或桌面应用中展示层级关系的数据。本教程将详细讲解如何使用TreeView控件来绑定SQL数据库中的数据,以“treeview”表为...

    Java实现C#中的TreeView结构.zip

    首先,让我们关注Java中的TreeView实现。在Java中没有内置的TreeView组件,但我们可以利用JavaFX或Swing库来创建自定义的TreeView。JavaFX提供了一个`TreeView`类,允许我们创建和定制树节点。每个节点(`TreeItem`...

    javafx资料

    JavaFX提供了丰富的预定义控件,如按钮(Button)、文本框(TextField)、标签(Label)、列表视图(ListView)和树视图(TreeView)等。每个控件都有独特的属性和方法,理解并熟练使用这些控件是构建用户界面的...

    java树形控件实现代码

    JTree还支持拖放操作,通过实现DragSource和DropTarget接口,可以启用节点之间的拖放功能,使得用户可以方便地重新排列树结构。 8. **JavaFX的TreeView** 对于JavaFX,对应的树形控件是TreeView,它同样使用...

    带复选框(checkbox)的树

    在树结构中,复选框与节点关联,表示用户对该节点代表的项的选中状态。 3. **多级选择**:带复选框的树允许用户进行多级选择。如果一个节点被选中,其所有子节点通常也会被自动选中;反之,取消父节点的选择则会...

    javafx模拟磁盘管理系统

    在这个磁盘管理系统中,可能包含一个主窗口,里面分布有树形视图(TreeView)展示磁盘和文件夹结构,以及一个工作区(AnchorPane或SplitPane)用于显示文件内容或进行文件操作。 1. **TreeView组件**:用于展示文件...

    Mastering JavaFX 8 Controls

    书中提供了如何构建和操作树结构的指导。 2. **Chart API**: JavaFX 内置的图表库支持各种图表类型,如折线图、柱状图等。本书详细介绍了如何使用这些图表,并展示了如何定制它们的外观。 3. **Dialogs**: ...

    Learn JavaFX 8

    本章详细介绍了 JavaFX 的事件模型及其实现方式。 ##### 第 10 章:理解布局面板(Layout Panes) 布局面板是组织和排列 UI 组件的关键组件。本章介绍了 JavaFX 提供的各种布局面板类型及其应用场景。 ##### 第 11...

    java实现系统目录树控件

    在Java编程环境中,实现系统目录树控件是一个常见的需求,特别是在开发桌面应用程序或者需要图形化展示文件系统结构的场景中。这个控件允许用户以树形结构浏览和操作计算机的文件系统,使得用户能直观地查看目录层级...

    treeView2xml_树控件转化成Xml文件_

    在IT领域,树形控件(TreeView)是一种常见的用户界面元素,它用于显示层次结构的数据。这个"treeView2xml"项目显然关注于如何将树形控件中的数据转换为XML(可扩展标记语言)文件。XML是一种结构化数据存储格式,...

    实现树菜单功能.rar

    对于桌面应用程序,例如Windows Forms或WPF应用,我们可以利用.NET Framework提供的控件,如TreeView控件,来轻松创建树形结构。在Java Swing或JavaFX中,也有相似的JTree组件供开发者使用。 实现树菜单的关键在于...

    Learn JavaFX 8.pdf

    12. **Understanding TableView, TreeView, TreeTableView**: 深入理解JavaFX中的表格视图和树视图,以及它们的高级形式TreeTableView。 13. **Browsing Web Pages**: 介绍如何在JavaFX应用中嵌入Web浏览器并进行...

    treeview用户指南

    - **WPF (.NET)**:在Windows Presentation Foundation中,利用System.Windows.Controls.TreeView实现更丰富的可视化效果。 - **JavaFX**:JavaFX的TreeView类提供类似的功能,适用于Java应用程序。 - **Qt (C++)...

    treeviewtreeviewtreeview

    1. **配置树结构**:定义树的节点结构,包括节点的ID、文本、图标、子节点等属性。 2. **数据源**:定义数据的来源,可能是JSON数据或者远程服务器的数据接口。 3. **扩展和自定义**:可能涉及到自定义节点的渲染、...

Global site tag (gtag.js) - Google Analytics