我一直在工作很長時間,一段時間以來我只能描述爲「線程畫布」。一會兒我會描述我所擁有的東西,但由於我真的願意接受新的想法,現有的解決方案或全新的開始,我將制定這個問題。用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