2010-06-20 73 views
0

編輯 - 簡而言之,我在尋找的是向JEditorPane添加左邊距的可靠方法(請參閱我遇到的問題,喜歡)。爲JEditorPane文本框創建左邊距


我想在JEditorPane中設置一些文本的樣式,並且相當成功。我面臨的唯一問題是,似乎不可能創造一個保證金。

基本上,我擴展了PlainView並重寫了drawUnselectedText方法。現在,我只是將文本着色爲紅色並更改字體。我也重寫了drawSelectedText方法來爲文本着色。

無論光標位置等是否一致,無論文本是否被選中 - 只要我沒有設置邊距

但是,如果我爲JEditorPane設置了邊距,則JEditorPane只能在大多數時間使用。當從任意行的最左側字符處開始選擇時,唯一不起作用的情況是。在這種情況下,邊距將被忽略,所選文本將出現在JEditorPane的最左側。

我知道這是一個非常特殊的問題,大多數其他人可能沒有經歷過,我在網上沒有發現任何關於此的信息,但我希望這裏有人會有解決方案。

任何想法?即使任何可以讓我使用其他方法來設定保證金的事情都會非常有幫助。

+0

如果你沒有擴展'PlainView',它的行爲是這樣嗎? – akf 2010-06-20 02:04:38

+0

不,也不是這樣,如果我不重寫drawUnselectedText方法,所以我認爲這是我的問題的根源。 – Cam 2010-06-20 02:30:54

回答

0

我放棄尋找這個問題的優雅解決方案。基本上我創建了一個hack,測試是否存在bug發生的地方(從左邊選擇等),如果他們這樣做,則調整文本的渲染。

我真的不喜歡黑客,因爲它們通常對可移植性和可維護性不利,但這似乎起作用,所以我想我會將它抽象出來,並希望它不會破壞任何東西。

無論如何,它的工作是關鍵。我沒有收到任何答案,但我敢肯定有一些人至少試圖想一些東西,所以謝謝:)

順便說一句 - 如果有人能想出一個優雅的解決方案,我仍然會接受而不是我自己的答案(我不能兩天)。


編輯:這是我喜歡Java的原因之一。黑客引發可移植性問題的可能性較小 - 儘管這與渲染有關(它通過與Graphics對象交互而起作用),但它仍然適用於任何操作系統。