Возможно, вам лучше использовать TextInput с изменяемым свойством, установленным на false, и для borderStyle вместо «Label» вместо «Label».
Что касается компонента «Текст», то в некоторых ситуациях это немного лучше, чем «Метка», поскольку он позволяет пользователю выбирать отображаемый текст с помощью мыши и поддерживает несколько строк. Но я не знаю, можете ли вы выделить текст программно, хотя я подозреваю, что если вы вложите его в подкласс, у вас будет больший успех, чем с подклассом Label. В качестве альтернативы вы можете использовать TextArea с теми же свойствами, которые я упоминал для TextInput.
Чтобы изменить размер TextInput на основе его текста, вы можете переопределить метод validateProperties и использовать getLineMetrics () для вычисления необходимой ширины:
public override function validateProperties():void
{
super.validateProperties();
var tm : TextLineMetrics = this.getLineMetrics(0);
var txtWidth : uint = tm.width + tm.leading + 10;
this.width = minWidth < txtWidth ? txtWidth : minWidth;
}
Это значение "10" может потребоваться для изменения в зависимости от используемого вами шрифта.
Если вам нужно, чтобы TextInput изменял размер при вводе текста, вам нужно прослушать его событие изменения и вызвать validateProperties из обработчика.