我想在Flex 3中扩展RadioButton组件,向其添加文本输入行来代替标签。有可能这样做吗?
或者,是否可以让容器(例如HBox)将所有属性委托给内部组件(例如RadioButton),以便我可以创建一个“就像'收音机'的复合组件按钮?
答案 0 :(得分:3)
如果你在一个Actionscript类中扩展RadioButton类,(而不是一个mxml文件 - 有更好的方式吗?),你应该能够添加一个文本输入,即:
package components
{
import mx.controls.RadioButton;
public class Test extends RadioButton
{
public function Test()
{
super();
}
}
}
您可能会发现这个 - http://www.adobe.com/devnet/flex/quickstart/building_components_in_as/的帮助,尤其是标题为创建复合动作脚本组件的部分。如果这是你的第一个自定义组件,你也可能想要阅读Flex组件生命周期(http://weblog.mrinalwadhwa.com/2009/02/17/understanding-the-flex-component-lifecycle/ - 虽然我永远找不到那个东西的好链接)。 flex组件的生命周期有点复杂,你需要确保理解它,这样你的组件就不会不必要地重新绘制内容。
你想在create children函数中添加textInput,textField本身是在Button的(即RadioButton子类)createChildren()方法中创建的。
/**
* @private
*/
override protected function createChildren():void
{
super.createChildren();
// Create a UITextField to display the label.
if (!textField)
{
textField = IUITextField(createInFontContext(UITextField));
textField.styleName = this;
addChild(DisplayObject(textField));
}
}