簡體   English   中英

更快的方法來寫下拉框項目列表

[英]Quicker Way To Write List of Items For Drop-Down Boxes

我正在學習Java,目前正在使用Swing。 創建下拉框時,將創建一個包含要顯示為選項的數組。 但是說,例如,我希望我的下拉框列出1900-2013年,是否有更好,更快的方法列出這些數字,而不是將它們全部輸入一個大數組? 就像我可以說我希望數組保留2個參數之間的所有值嗎?

創建下拉框時,將創建一個包含要顯示為選項的數組。 但是說,例如,我希望我的下拉框列出1900-2013年

  • JSpinnerSpinnerDateModel而不是JComboBox一起使用

  • 否則,您將需要AutoCompete for JComboBox實現一些AutoCompete for JComboBox ,因為帶有1k Items的范圍根本不是用戶友好的,也不是在使用該Object中的選擇所困擾

  • 如果要使用用戶選擇的Date instance ,則將Date放到DefaultComboBoxModel而不是intInteger (代表年份)中

像這樣嗎 從今年倒數到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM