如何在Flex TextArea中更改TAB字符的宽度?

时间:2010-06-30 15:24:26

标签: flex flash actionscript-3 text textarea

是否可以更改Flex TextArea中插入TAB字符的宽度?

我正在捕获FocusEvent.KEY_FOCUS_CHANGE个事件并手动将"\t"插入到使用嵌入式等宽字体设置样式的文本区域中。默认情况下,TAB显示两个半等宽字符宽......我需要它们显示五个宽带字符宽。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

<mx:Canvas>
    <mx:Script>
        [Bindable]
        public var myText:String;
    </mx:Script>
    <mx:TextArea id="textArea" text="{TabUtil.expand(myText)}" valueCommit="myText = TabUtil.contract(myText))" />
 </mx:Canvas>



  public class TabUtil
  {
       public static const SPACE:String = "     "; // Five spaces;
       public static function expand(text:String):String
       {
            return text.replace("\t",SPACE);
       }
       public static function contract(text:String):String
       {
            return text.replace(SPACE,"\t");
        }
   }

我忘记了替换的参数,但我认为它可能需要一个RegEx,在这种情况下你需要调整以上内容。但它应该有用。

答案 1 :(得分:0)

textFormat的tabStops属性是您正在寻找的。您可以设置每个标签放置位置的像素值。

var tf:TextFormat = new TextFormat(); tf.tabStops = [100, 200, 300, 400]; myTextArea.mx_internal::getTextField().defaultTextFormat = tf;