在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
差距那是相当的大啊!所以如果要插入大量(百个以上)的图形节点,一定要注意这个问题。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用JavaFX框架开发一个基于crawler4j的图形化网络爬虫,以及如何自定义XPath表达式来提取网页内容,并将其存储到MySQL数据库中。这是一项涉及多方面技术的综合性任务,包括前端界面...
JavaFX是Java平台上的一个强大的图形用户界面(GUI)工具包,它允许开发者创建美观、交互式的桌面应用程序。SceneBuilder 2.0是JavaFX的一个配套工具,专门用于设计和布局GUI界面,使得开发者可以无需编写复杂的布局...
为了显示二叉树,可以利用Java Swing或JavaFX等图形用户界面库创建GUI(图形用户界面)。 具体到“BiTreeGui.java”这个文件,很可能是实现了上述功能的Java类。它可能包含了二叉树节点类的定义,以及图形界面元素...
6. Java编程:使用Java实现AVL树的优势在于,Java提供了强大的集合框架和图形用户界面库(如Swing或JavaFX),使得开发这样的项目变得相对容易。通过Java代码,我们可以清晰地看到数据结构和算法的实现,同时利用...
- **插入**:在链表的头部、尾部或指定位置插入新节点。 - **删除**:根据指定的节点或值删除链表中的节点。 - **查找**:在链表中搜索特定的元素。 - **遍历**:按照顺序访问链表的所有节点。 - **反转**:...
此外,为了实现图形化展示,可能还需要使用图形库(如JavaFX或Swing)来创建用户界面,接收用户输入并显示二叉树的图形表示。 【实验步骤细化】 1. **需求分析**:确定程序应能处理的输入和输出格式,以及实现的...
在树形控件中插入背景图,主要是为了美化用户界面,提高用户体验。背景图可以是纯色、渐变色、图片或者其他自定义图形,能够增加控件的视觉吸引力。以下是一些关于如何在树形控件中添加背景图的关键知识点: 1. **...
7. **Java GUI开发**:压缩包中包含的“图形版”可能是指包含了使用Java Swing或JavaFX开发的图形用户界面。学习如何设计和实现这样的界面,将有助于开发者创建与OrientDB交互的可视化工具。 8. **实战案例**:通过...
- **单链表**:单链表是另一种线性数据结构,每个节点包含数据和指向下一个节点的引用。相比于顺序表,单链表在插入和删除操作上更灵活,但随机访问效率较低。 4. **插入排序算法**:插入排序是一种简单直观的排序...
这个函数并没有显示在提供的代码片段中,但通常它会包含一个循环,用于接收用户输入并创建新的链表节点,然后通过 `inserStu(Link L, Link Elem)` 函数将新节点插入链表。 4. **插入函数**: `inserStu(Link L, ...
- 图形用户界面:如Java Swing或JavaFX中的树形视图(JTree),用于展示层次化的数据。 - 数据结构与算法:二叉搜索树、AVL树、二叉堆等都是基于树的数据结构,用于实现高效算法。 6. **树形结构与MiniUI**:...
Java的图形库,如JavaFX或Swing,可能被用来创建可视化界面,动态展示B+树的插入、删除和查找过程。 通过“B-Plus-Tree-Visualization-App-master”这个项目,你可以深入研究B+树的实现细节,包括节点类的设计、树...
- **插入(Insert)**:可以使用递归的插入算法,检查新员工的ID与当前节点的ID,然后根据大小关系决定是在左子树还是右子树进行插入。 - **删除(Delete)**:删除操作较为复杂,可能需要处理四种情况:无子节点、...
在Java中,我们可以使用图形库如JavaFX或Swing来创建可视化界面,展示二叉树。通常,我们需要创建一个自定义的树节点类,包含节点值、指向子节点的引用以及图形化表示。利用图形库提供的组件,如JTree或Scene Graph...
4. Java GUI:系统界面设计需要用到Java的图形用户界面库,例如Swing或JavaFX,涉及组件如按钮、文本框、列表等,以便用户能够直观地与系统进行交互。 二、参考文献 1. "TC 图形函数详解":提供关于图形界面设计的...
`TreeMap`通过红黑树算法提供了高效的插入、删除和查找操作,而`ArrayList`则可以作为简单的链表节点实现。对于复杂的树形结构,我们可以自定义类来存储节点信息,并包含指向子节点的引用。 要将这些数据结构以图片...
在Java中,这通常涉及多线程(用于处理游戏循环和用户输入)、图形用户界面(GUI,如使用Java Swing或JavaFX)以及基本的逻辑判断。 总的来说,"java贪吃蛇(链表)"项目是一个很好的学习机会,可以让你深入理解...
3. **GUI编程**:为了实现用户界面,我们需要使用Java的图形用户界面(GUI)库,如JavaFX或Swing。用户可以通过点击选择节点,这需要事件监听器来响应用户的交互。 4. **事件处理**:在GUI中,当用户进行某些操作...
这样,每次添加新成绩时,只需在链表末尾插入新节点即可,无需关心已有的成绩数量。 链表的操作主要包括以下几种: 1. 插入:在指定位置(如链表头部或尾部)插入新的学生信息或成绩。 2. 删除:根据特定条件(如...
在Java中,可视化的实现可能依赖于图形用户界面(GUI)库,如Swing或JavaFX。Display_Tree类可能包含一个或多个方法,用于创建和布局树的图形表示,更新节点的位置,以及处理用户的交互事件,如点击、拖动等。这样的...