亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更新鏈表。

更新鏈表。

慕哥9229398 2023-08-04 18:58:05
我的案例非常具體:首先,我有一個已定義的字符串數組,其中包含 JComboBox 的默認選項(對于所有用戶始終相同):private static final String[]   JOB_TYPE = {options go here};這些選項加載到 JComboBox 中,如下所示:private JComboBox   jobType = new JComboBox(JOB_TYPE);然后,還有其他選項可能因用戶而異,我也必須將其加載到 JComboBox 內。由于數組具有固定數量的元素,因此我必須找到另一種方法來將除默認選項之外的特定選項添加到 JComboBox 中。所以我所做的是,我創建了一個 LinkedList 并使用 Arrays 中的 asList 方法加載其中數組的默認選項,然后添加因用戶而異的其他選項:private List<String> allJobs = new LinkedList<String>(Arrays.asList(JOB_TYPE));現在可以使用 toArray() 方法將 allJobs 作為 JCombobox 的參數傳遞:private JComboBox   jobType = new JComboBox(allJobs.toArray());現在,我在 allJobs 中擁有了所有默認選項,并且由于它不再是一個數組,我還可以向其中添加將加載的特定選項,如下所示:    for (int j = 0; j < modelJobCustomType.getSize(); j++) {        allJobs.add(((XmlJobCustomElem) modelJobCustomType.getElementAt(j)).getName());    }現在,這是我的問題:當我檢查 JComboBox 的內容時,我只找到默認選項,而不是特定選項,即使我可以使用調試器看到列表大小已增加并且它也包含特定選項。我的猜測是,由于 jobType、JOB_TYPE 和 allJobs 是全局變量,因此在編譯器到達加載特定選項的代碼部分之前,ComboBox 已被填充,這可能就是為什么我只能看到默認選項的原因。它是否正確?如果是這樣,我該如何解決這個問題。請記住,這些全局變量必須保持全局,因為它們也在類的許多其他部分中使用。感謝您的幫助
查看完整描述

3 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

組合框被賦予從列表派生的數組。之后添加到列表中不會改變數組值(數組是固定長度值),

還有一個JComboBox帶有Vector參數,允許添加(與數組相反)。

然而,最好的參數是最高級別JComboBox的。ComboBoxModel<E>有一個默認實現DefaultComboBoxModel

DefaultComboBoxModel<String>?model?=?new?DefaultComboBoxModel<>(JOB_TYPE);
model.addElement("custom0");
model.addElement("custom1");
combobox?=?new?JComboBox(model);


查看完整回答
反對 回復 2023-08-04
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

您可以像這樣初始化您的類,以便在初始化時保留所有作業,allJobs而不是僅存在于JComboBoxJamie 解決方案中的自定義作業。您還可以在構造函數內完成實例字段的所有初始化:


class Main {

    private static final List<String> FIXED_OPTIONS = Arrays.asList("fixed0", "fixed1", "fixed2");


    private List<String> allJobs = new ArrayList<>(FIXED_OPTIONS);

    {

        int count = 6;

        for (int i = 0; i < count; i++) {

            allJobs.add("custom" + i);

        }

    }


    private JComboBox jobType = new JComboBox(allJobs.toArray());

}


查看完整回答
反對 回復 2023-08-04
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

可以看一下源碼:JComboBox


181:   /**

182:    * Constructs JComboBox with specified list of items.

183:    *

184:    * @param itemArray array containing list of items for this JComboBox

185:    */

186:   public JComboBox(Object[] itemArray)

187:   {

188:     this(new DefaultComboBoxModel(itemArray));

189:     

190:     if (itemArray.length > 0) 

191:       setSelectedIndex(0);

192:   }

構造函數創建 DefaultComboBoxModel 的新實例。


查看完整回答
反對 回復 2023-08-04
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號