我一直在工作很长时间,一段时间以来我只能描述为“线程画布”。一会儿我会描述我所拥有的东西,但由于我真的愿意接受新的想法,现有的解决方案或全新的开始,我将制定这个问题。用Java绘制在画布上的螺纹SWT
画布旨在显示遗传信息(尽管具体目的有点不相关)。作为传统的文本编辑器,这种遗传代码被绘制到画布上,用户可以通过输入,选择等与画布交互。代码然后进一步用各种非文本特征(例如形状,线条和颜色)进行修饰。
这里的主要问题是需要在显示某些信息之前进行重要的计算。
考虑以下实体模型:
Sample of canvas http://img23.imageshack.us/img23/9931/canvasgv.png
正如你可以看到,遗传密码是等宽,但所述酶切口(遗传密码如上所示)不是。计算酵素切割的地方非常繁琐,因为可能会有很多屏幕显示特征(上图,蓝色箭头)。三字母代码表示三个遗传密码块的翻译;虽然这很快执行,但在该序列中输入单个字母会使它们全部移位 - 需要重新计算。
优选地,为了加快速度,这些部分中的每一个都可以发生在单独的线程中,最终一起来组成最终图像。
总结:显示器的各个部分在计算上都很困难,尽管编辑器尽可能具有尽可能的响应性。
我现在的实现涉及在单个线程中执行所有绘制事件。通过键入,调整大小或进行选择,可以创建大量线程,但只有最近的线程才能更新显示。这可以保证更新显示不会超过一次迭代,但不会提供UI的快速反馈。
我研究过对现有编辑器进行修改,如StyledText,但任何超过某些粗体和颜色的操作都会使其显着变慢。
有什么建议吗?
好的见解,亚伦。我将介绍如何将小部件嵌入到StyledText中。至于由于酶而跳动的文本:我不认为这很可能,因为这很慢(在大文件中有许多具有正则表达式作为识别序列的酶)。我认为给他们一个最小的显示延迟实际上是一个好主意,这样在较小的文件中它只会在一两秒钟后更新。尽管如此,这确实在细节上。如果我可以将可变大小的小部件放入StyledText,我想我已经到了一半了。 – 2009-09-29 15:34:22
更改小部件的大小应使StyledText自行重新布局。 – 2009-09-29 15:52:38