如果您曾經使用Visio或UML類圖編輯器,您可以瞭解我要實現的目標:在JFrame中,用戶可以添加包含小型可編輯文本字段的省略號。當用戶拖動它們時,這些橢圓可以在框架內重新定位。點擊一個橢圓會導致文本變爲可編輯:出現克拉,突出顯示子串是可能的,等等。更好的選擇:TextLayout或JTextComponent的「橢圓與可編輯文本」組件?
我已經設置了基本結構:'橢圓'是一個獨立的組件,有方法從包含的JFrame及其監聽器調用它。我已經試過兩種方法:
在組件的draw()方法,用一個TextLayout找到界限,在橢圓內包含的文本的位置,並使用TextLayout中的抽籤失敗中汲取到的幀()。這很快。在JFrame中拖動組件,鼠標懸停和鼠標單擊行爲都很簡單。然而,對於編輯功能,它看起來像我將需要編寫大量的自定義代碼來處理命中測試,克拉定位,文本突出顯示,線條包裝等。
讓組件包含對包含JFrame的引用,並在繪製橢圓後在該JFrame中添加或重新定位TextComponent。這具有用於編輯和換行的所有內置TextComponent行爲的優點。但是後勤工作確實很渺茫,而且定位TextComponent也變得混亂 - 尤其是當用戶拖動組件時。
我很可能想到這一切都是錯誤的。任何人都可以提出一個簡單的方法來做到這一點,我還沒有偶然發現?
Thx Howard,我會試試這個方法! – PensacolaSlick 2011-06-16 17:42:31