[英]Quicker Way To Write List of Items For Drop-Down Boxes
我正在學習Java,目前正在使用Swing。 創建下拉框時,將創建一個包含要顯示為選項的數組。 但是說,例如,我希望我的下拉框列出1900-2013年,是否有更好,更快的方法列出這些數字,而不是將它們全部輸入一個大數組? 就像我可以說我希望數組保留2個參數之間的所有值嗎?
創建下拉框時,將創建一個包含要顯示為選項的數組。 但是說,例如,我希望我的下拉框列出1900-2013年
否則,您將需要AutoCompete for JComboBox
實現一些AutoCompete for JComboBox
,因為帶有1k Items的范圍根本不是用戶友好的,也不是在使用該Object中的選擇所困擾
如果要使用用戶選擇的Date instance
,則將Date
放到DefaultComboBoxModel
而不是int
或Integer
(代表年份)中
像這樣嗎 從今年倒數到1900年。
List<String> years = new ArrayList<String>();
int thisyear =2013; //you could parse this out of a new Date() object instead
for (int y = thisYear; y >= 1900; y--) {
years.add(Integer.toString(y));
}
遵循這些原則,應該會生成所需年份的ArrayList。
ArrayList<String> myArray = new ArrayList<>();
for(int i = 1900; i < 2014; i++){
myArray.add(Integer.toString(i));
}
for(String s : myArray){
System.out.println(s);
}
我相信生成這樣的列表稱為動態創建它,或“在運行時”。
您可以使用不同的方法,而不僅僅是遍歷幾年。
例如,您可以為組合框創建一個自定義模型:
ComboBoxModel model = new DefaultComboBoxModel ()
{
@Override
public Object getElementAt ( int index )
{
return 1900 + index;
}
@Override
public int getSize ()
{
return 114;
}
};
JComboBox comboBox = new JComboBox ( model );
這應該足以生成所需的列表。
當然,您也可以使用一個簡單的數組作為數據:
Integer[] years = new Integer[ 114 ];
for ( int i = 0; i <= 113; i++ )
{
years[ i ] = 1900 + i;
}
ComboBoxModel model = new DefaultComboBoxModel ( years );
JComboBox comboBox = new JComboBox ( model );
每種方法都有其優點和缺點。
模型“方法”在應用程序啟動時會消耗更少的資源(以防您的列表確實很大),盡管每次組合框渲染器調用該值或您嘗試檢索該值時它都會生成值(至少在我的示例中實施-您可以添加值緩存,從而解決該問題)。
值“方法”需要較少的編碼,並且在某些簡單情況下更為明顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.