2009-11-29 40 views
1

我試圖用flex實現簡單的聊天應用程序。在其中,我所有的聊天消息都以數組收集項目的形式存儲,其中每個項目都是一個字符串(與一個聊天消息對應)。我正在使用datagrid顯示所有消息。一條消息發送到數據網格的一個單元。Flex:Datagrid,遇到很長的字符串時出現斷線

它下面的樣子: http://img.skitch.com/20091129-qt3gjneh8ksygypyjnra67auf.png

我要添加了一個功能,處理文本的大線條的工具。是否有一種方法可以在很長的情況下實現換行。

在此先感謝

+0

要麼使用文本區域作爲自定義項目渲染器而不是默認文本輸入 - 或者(事件更好 - 但取決於您的要求),爲什麼不使用大文本區域來顯示整個聊天和不斷追加新消息? – Amarghosh 2009-11-29 17:01:37

+0

嗯,實際上這是一個好主意,但我希望每條消息都以這樣的文本區域的新行顯示,也許您可​​以建議在消息之間添加換行符的方式? – 2009-11-29 20:31:17

回答

1

我沒有在使用了一段彎曲,但我能想到的2種方式來解決這個問題:

您創建一個自定義渲染,或改變現有的渲染器的文本框來是multiline = true,wordWrap和autoSize = TextFieldAutoSize.LEFT。

您可以嘗試通過設置labelFunction逃脫。例如:

//assuming an item has a user and a message property, your might be called something else 
private function chopString(item:Object):String{ 
    var fullMess:String = item.user + " > " + item.message; 
    if(fullMess.length > 30) fullMess.substr(0,30) + "\n" + fullMess.substr(0,31); 
} 

這是粗略的代碼,你應該測試它並調整它,但我希望這個想法是可讀的。 HTH

0

只需將這兩個屬性添加到您的Datagrid和Datagrid列。

<mx:Datagrid variableRowHeight="true" 

<mx:DataGridColumn wordWrap="true" 

請注意:您應該在這裏使用List,因爲它足以顯示一列消息,並且更輕量級。

相關問題