`
MyJavaFX
  • 浏览: 18306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JavaFX提高插入图形节点的速度

阅读更多

在JavaFX中,如果想要大量的插入图形节点(node),一定要注意插入的方法。应该是先把大量的图形节点插入到节点序列(sequence )中,然后再一起插入到场景(scene);如果直接把一个一个的节点插入到场景中,将会让你等到花儿都谢了:)

 

举例说明,快速方式:

var stage: Stage = Stage {
    title: "快速插入图形节点"
    width: 640
    height: 480
    scene: Scene {}
}

function run(args:String[]) {
    var i = 0;
    var n = 300;

    var startTime = java.lang.System.currentTimeMillis();
    var lines: Line[];
    while (i < n) {
        insert addLine() into lines;
        i++;
    }
    stage.scene.content = lines;
    var endTime = java.lang.System.currentTimeMillis();
    println("用时{endTime-startTime}ms");
}

function addLine(): Line {
    var x1: Number = Math.random()*640;
    var x2: Number = Math.random()*640;
    var y1: Number = Math.random()*480;
    var y2: Number = Math.random()*480;

    return Line {
        startX: x1, startY: y1
        endX: x2, endY: y2
        strokeWidth: 2
        stroke: Color.BLACK
    };
}

 结果:用时328ms

 

费时的方式:

var stage: Stage = Stage {
    title: "缓慢插入图形节点"
    width: 640
    height: 480
    scene: Scene {}
}

function run(args:String[]) {
    var i = 0;
    var n = 300;

    var startTime = java.lang.System.currentTimeMillis();
    var lines: Line[];
    while (i < n) {
        addLine();
        i++;
    }
    var endTime = java.lang.System.currentTimeMillis();
    println("用时{endTime-startTime}ms");
}

function addLine() {
    var x1: Number = Math.random()*640;
    var x2: Number = Math.random()*640;
    var y1: Number = Math.random()*480;
    var y2: Number = Math.random()*480;

    insert Line {
        startX: x1, startY: y1
        endX: x2, endY: y2
        strokeWidth: 2
        stroke: Color.BLACK
    } into stage.scene.content;
}

结果:用时22469ms

 

差距那是相当的大啊!所以如果要插入大量(百个以上)的图形节点,一定要注意这个问题。

2
0
分享到:
评论

相关推荐

    用JavaFX开发基于crawler4j的图形化的网络爬虫

    在本文中,我们将深入探讨如何使用JavaFX框架开发一个基于crawler4j的图形化网络爬虫,以及如何自定义XPath表达式来提取网页内容,并将其存储到MySQL数据库中。这是一项涉及多方面技术的综合性任务,包括前端界面...

    JavaFX+scenebuilder2.0实现酒店管理系统(数据库)

    JavaFX是Java平台上的一个强大的图形用户界面(GUI)工具包,它允许开发者创建美观、交互式的桌面应用程序。SceneBuilder 2.0是JavaFX的一个配套工具,专门用于设计和布局GUI界面,使得开发者可以无需编写复杂的布局...

    数据结构 二叉树 java图形界面实现

    为了显示二叉树,可以利用Java Swing或JavaFX等图形用户界面库创建GUI(图形用户界面)。 具体到“BiTreeGui.java”这个文件,很可能是实现了上述功能的Java类。它可能包含了二叉树节点类的定义,以及图形界面元素...

    AVL树操作图形界面

    6. Java编程:使用Java实现AVL树的优势在于,Java提供了强大的集合框架和图形用户界面库(如Swing或JavaFX),使得开发这样的项目变得相对容易。通过Java代码,我们可以清晰地看到数据结构和算法的实现,同时利用...

    链表操作演示程序Java版

    - **插入**:在链表的头部、尾部或指定位置插入新节点。 - **删除**:根据指定的节点或值删除链表中的节点。 - **查找**:在链表中搜索特定的元素。 - **遍历**:按照顺序访问链表的所有节点。 - **反转**:...

    JAVA二叉树课设可以实现用户输入数据以二叉树图形表示出来

    此外,为了实现图形化展示,可能还需要使用图形库(如JavaFX或Swing)来创建用户界面,接收用户输入并显示二叉树的图形表示。 【实验步骤细化】 1. **需求分析**:确定程序应能处理的输入和输出格式,以及实现的...

    在树形控件中插入背景图

    在树形控件中插入背景图,主要是为了美化用户界面,提高用户体验。背景图可以是纯色、渐变色、图片或者其他自定义图形,能够增加控件的视觉吸引力。以下是一些关于如何在树形控件中添加背景图的关键知识点: 1. **...

    基于Java的源码-OrientDB(基于Java的实例开发源码-文档数据库) 图形版.zip

    7. **Java GUI开发**:压缩包中包含的“图形版”可能是指包含了使用Java Swing或JavaFX开发的图形用户界面。学习如何设计和实现这样的界面,将有助于开发者创建与OrientDB交互的可视化工具。 8. **实战案例**:通过...

    班级考勤管理系统程序代码+实现GUI界面设计+JAVA实现+数据结构(顺序表、单链表、插入排序算法)+程序要求+程序说明书.rar

    - **单链表**:单链表是另一种线性数据结构,每个节点包含数据和指向下一个节点的引用。相比于顺序表,单链表在插入和删除操作上更灵活,但随机访问效率较低。 4. **插入排序算法**:插入排序是一种简单直观的排序...

    学生管理系统(数据结构课程设计之完整代码).pdf

    这个函数并没有显示在提供的代码片段中,但通常它会包含一个循环,用于接收用户输入并创建新的链表节点,然后通过 `inserStu(Link L, Link Elem)` 函数将新节点插入链表。 4. **插入函数**: `inserStu(Link L, ...

    java树形结构

    - 图形用户界面:如Java Swing或JavaFX中的树形视图(JTree),用于展示层次化的数据。 - 数据结构与算法:二叉搜索树、AVL树、二叉堆等都是基于树的数据结构,用于实现高效算法。 6. **树形结构与MiniUI**:...

    B-Plus-Tree-Visualization-App:该应用程序以图形方式说明了b + tree数据结构的用法。 您甚至可以通过图形动画来跟踪整个操作过程,从而更容易理解它们的工作方式

    Java的图形库,如JavaFX或Swing,可能被用来创建可视化界面,动态展示B+树的插入、删除和查找过程。 通过“B-Plus-Tree-Visualization-App-master”这个项目,你可以深入研究B+树的实现细节,包括节点类的设计、树...

    java 员工管理系统(coursedesign) 二叉树

    - **插入(Insert)**:可以使用递归的插入算法,检查新员工的ID与当前节点的ID,然后根据大小关系决定是在左子树还是右子树进行插入。 - **删除(Delete)**:删除操作较为复杂,可能需要处理四种情况:无子节点、...

    arbol-binario-grafico-en-java:http; netosolis.com Java 中的图形二叉树

    在Java中,我们可以使用图形库如JavaFX或Swing来创建可视化界面,展示二叉树。通常,我们需要创建一个自定义的树节点类,包含节点值、指向子节点的引用以及图形化表示。利用图形库提供的组件,如JTree或Scene Graph...

    通讯录管理系统个人任务实施方案

    4. Java GUI:系统界面设计需要用到Java的图形用户界面库,例如Swing或JavaFX,涉及组件如按钮、文本框、列表等,以便用户能够直观地与系统进行交互。 二、参考文献 1. "TC 图形函数详解":提供关于图形界面设计的...

    图片式树形结构图总结.zip

    `TreeMap`通过红黑树算法提供了高效的插入、删除和查找操作,而`ArrayList`则可以作为简单的链表节点实现。对于复杂的树形结构,我们可以自定义类来存储节点信息,并包含指向子节点的引用。 要将这些数据结构以图片...

    java贪吃蛇(链表)

    在Java中,这通常涉及多线程(用于处理游戏循环和用户输入)、图形用户界面(GUI,如使用Java Swing或JavaFX)以及基本的逻辑判断。 总的来说,"java贪吃蛇(链表)"项目是一个很好的学习机会,可以让你深入理解...

    使用java语言编写的树动态构建小例子

    3. **GUI编程**:为了实现用户界面,我们需要使用Java的图形用户界面(GUI)库,如JavaFX或Swing。用户可以通过点击选择节点,这需要事件监听器来响应用户的交互。 4. **事件处理**:在GUI中,当用户进行某些操作...

    学生成绩管理系统

    这样,每次添加新成绩时,只需在链表末尾插入新节点即可,无需关心已有的成绩数量。 链表的操作主要包括以下几种: 1. 插入:在指定位置(如链表头部或尾部)插入新的学生信息或成绩。 2. 删除:根据特定条件(如...

    二叉树可视化Java语言实现(完整版,打开即可运行)

    在Java中,可视化的实现可能依赖于图形用户界面(GUI)库,如Swing或JavaFX。Display_Tree类可能包含一个或多个方法,用于创建和布局树的图形表示,更新节点的位置,以及处理用户的交互事件,如点击、拖动等。这样的...

Global site tag (gtag.js) - Google Analytics