2011-07-12 110 views
0

小問題我已經定義的類ToolTipUI其擴展爲BasicToolTipUI提出繪畫Swing組件的TipText的,我用分隔符「|」(豎線)來區分TipText兩個階段。 這個分隔符之前的所有文本被認爲是正常的提示文本和下面這個分隔符的所有文字被認爲是加速文本裝訂。中的Java Swing

正如你知道豎線(「|」)是一種通常在字符串中使用相當普遍的字符。如果是這種情況,它不應該被認爲是分隔符,它有真正的意義。例如:

label.setToolTipText("<HTML><BODY><LEFT>V1|V2</BODY></HTML>"); Normal use 
label.setToolTipText("<HTML><BODY><LEFT>V1V2</BODY></HTML> | ctrl+v"); Use as delimiter 

我的問題是ToolTipUI不知道如何識別這個不同的現在,我不能改變分隔符「|」以另一個不尋常的價值爲特別建議。

任何人有想法?

感謝

+1

爲什麼你不把每個參數作爲單獨的參數傳遞? –

+0

@馬克艾略特的想法是最好的;添加一個需要兩個字符串的第二個'setToolTipText'方法。如果由於某種原因你不能這樣做,你可以使用該符號的HTML代碼:'|',所以你的解析器會跳過它,但由於標籤使用HTML,它應該將它轉換爲一個垂直條。 – 101100

+0

我使用label.setToolTipText(String)傳入,因爲它來自Java swing組件方法,所以我無法擴展每個組件類以傳遞每個參數作爲單獨的參數 – Jammy

回答

2

如果您不能使用馬克·埃利奧特的建議,傳遞參數作爲兩個獨立的字符串,然後沿着這些線路的東西可能會幫助或更糟糕的是:

private int delimPosition(String s) { 
    int eos = s.toLowerCase().lastIndexOf("</html>"); 
    return s.indexOf('|', eos+1); 
    } 

(要作爲s.indexOf('|')一個替代品,我猜你目前正在使用)。

儘管我懷疑在這種方法中可能會導致複雜度顯着增加,一旦所有的角落案例都已經制定出來。也許現在更好地重構。