我创建了一个扩展CustomCombo.as
的课程ComboBox
。发生的事情是CustomCombo
组合框显示为可编辑。我不想要这个,我无法找到将editable
设置为false
的属性。
我也尝试将组合框的textInput.editable
控件设置为false
,但无济于事。
非常感谢任何帮助。
CustomCombo.as
package custom {
import spark.components.ComboBox;
public class CustomCombo extends ComboBox {
public function CustomCombo() {
super();
// this.editable = false; //<-- THIS DOESNT WORK ***Access of possibly undefined property editable through a reference with static type custom:CustomCombo
// this.textInput.editable = false; //<-- THIS DOESNT WORK ***Cannot access a property or method of a null object reference
}
}
}
答案 0 :(得分:2)
在浏览Flex 4 API后,我发现他们建议使用DropDownList
控件。我可以看到他们从Flex 4中的editable
控件中删除了ComboBox
属性,但我可能错了。
我实施了DropDownList
,这解决了我的问题。
答案 1 :(得分:1)
我看到你使用的是火花而不是mx。我引用的editable
属性仅适用于基于mx的列表。在spark中,ComboBox扩展DropDownListBase
,默认情况下可编辑。
ComboBox
控件是DropDownListBase
控件的子类。与DropDownListBase
控件类似,当用户从ComboBox
控件的下拉列表中选择项时,数据项将显示在控件的提示区域中。控件之间的一个区别是
ComboBox
控件的提示区域是使用TextInput
控件实现的,而不是Label
控件的DropDownList
控件。因此,用户可以编辑控件的提示区域以输入不是预定义选项之一的值。例如,
DropDownList
控件仅允许用户从控件中的预定义项列表中进行选择。ComboBox
控件允许用户选择预定义项目,或在提示区域中输入新项目。您的应用程序可以识别出已输入新项目,并可选择将其添加到控件中的项目列表中。当用户在提示区域中输入字符时,
ComboBox
控件还会搜索项目列表。当用户输入字符时,控件的下拉区域将打开。然后滚动并突出显示项目列表中最接近的匹配。
理想情况下,在这种情况下,您应该使用DropDownList
。
尝试从构造函数访问textInput
时出现空错误,因为尚未创建它。在基于mx的控件(Flex-3)中,您可以从creationComplete
处理程序访问它;我不太清楚如何做基于火花的控制。
更新:我想我已经弄清楚如何访问spark中的皮肤部分(尽管你可能想要使用DropDownBox
代替)。您必须覆盖partAdded
方法。
override protected function partAdded(partName:String, instance:Object):void
{
super.partAdded(partName, instance);
if (instance == textInput)
{
textInput.editable = false;
}
}
虽然有一个问题:在这种情况下它可能不起作用。 source code of ComboBox.as表示
API会忽略视觉
editable
和selectable
属性
所以DropDownList
就是这样!
初步回答,发布于mx ComboBox
。
这不应该发生,因为editable属性的默认值是false
。
尝试从构造函数中将值显式设置为false
。
public function CustomCombo() {
super();
this.editable = false;
}