[英]Flex extending ComboBox
我創建了一個擴展ComboBox
的類CustomCombo.as
。 發生的事情是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
}
}
}
通過Flex 4 API翻找后,我發現他們建議使用DropDownList
控件。 從我可以看到他們從Flex 4中的ComboBox
控件中刪除了editable
屬性,但我可能錯了。
我實現了DropDownList
,這解決了我的問題。
我看到你使用的是火花而不是mx。 我引用的editable
屬性僅適用於基於mx的列表。 在spark中, ComboBox擴展了DropDownListBase
,默認情況下是可編輯的。
ComboBox
控件是DropDownListBase
控件的子類。 與DropDownListBase
控件一樣,當用戶從ComboBox
控件的下拉列表中選擇項時,數據項將顯示在控件的提示區域中。控件之間的一個區別是
ComboBox
控件的提示區域是使用TextInput
控件實現的,而不是DropDownList
控件的Label
控件。 因此,用戶可以編輯控件的提示區域以輸入不是預定義選項之一的值。例如,
DropDownList
控件僅允許用戶從控件中的預定義項列表中進行選擇。ComboBox
控件允許用戶選擇預定義項目,或在提示區域中輸入新項目。 您的應用程序可以識別已輸入新項目,並可選擇將其添加到控件中的項目列表中。當用戶在提示區域中輸入字符時,
ComboBox
控件還會搜索項目列表。 當用戶輸入字符時,控件的下拉區域將打開。 然后滾動並突出顯示項目列表中最接近的匹配項。
理想情況下,在這種情況下你應該使用DropDownList
。
嘗試從構造函數訪問textInput
時,您會收到null錯誤,因為它尚未創建。 在基於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;
}
}
雖然有一個問題:在這種情況下它可能不起作用。 ComboBox.as的源代碼說明了這一點
API忽略可視的
editable
和selectable
屬性
所以它是DropDownList
!
初步回答,發布於mx ComboBox
。
這不應該發生,因為editable屬性的默認值為false
。
嘗試從構造函數顯式將值設置為false
。
public function CustomCombo() {
super();
this.editable = false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.