首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Swing 列表框與組合框實戰:JList 與 JComboBox 核心用法

     編輯:Java 相關知識

元件對比

特性JListJComboBox
顯示模式多行可見,支援多選單行下拉,單選
資料建構支援 String[]、Vector、ListModel需逐項 addItem() 或 setModel()
滾動支援**需手動包裹 JScrollPane**內建下拉列表滾動
編輯性預設唯讀,可配合 ListCellEditor可設為可編輯 setEditable(true)

基礎範例


public class ListCombo extends JPanel {
    public ListCombo() {
        setLayout(new GridLayout(2, 1));

        // JList:一行代碼建構,外加 JScrollPane
        JList list = new JList(ButtonGroups.ids); // String[] 來源
        add(new JScrollPane(list));

        // JComboBox:動態添加 100 項
        JComboBox combo = new JComboBox();
        for (int i = 0; i < 100; i++)
            combo.addItem(String.valueOf(i));
        add(combo);
    }
    // main()...
}

進階技巧

1. 自定義渲染器


list.setCellRenderer(new DefaultListCellRenderer() {
    @Override public Component getListCellRendererComponent(
        JList list, Object value, int index, boolean sel, boolean focus) {
        JLabel label = (JLabel) super.getListCellRendererComponent(...);
        if (value instanceof User) {
            User u = (User) value;
            label.setText(u.getName() + " (" + u.getEmail() + ")");
            label.setIcon(userIcon);
        }
        return label;
    }
});

2. 模型分離


// 共享模型:列表與下拉框同步
DefaultListModel model = new DefaultListModel<>();
model.addElement("Item 1");
JList list = new JList(model);
JComboBox combo = new JComboBox(model); // 同一模型

3. 事件處理


// JList 選擇事件
list.addListSelectionListener(e -> {
    if (!e.getValueIsAdjusting()) {
        String selected = list.getSelectedValue();
        // 處理選擇...
    }
});

// JComboBox 動作事件
combo.addActionListener(e -> {
    String selected = (String) combo.getSelectedItem();
    // 處理選擇...
});

4. 可編輯組合框


combo.setEditable(true);
// 可選:自動完成支援 (第三方庫或自定義 DocumentFilter)

常見坑點

  • 忘記 JScrollPane:JList 不自動滾動,資料多時必須包裹。
  • 大量資料效能:>1000 項建議使用 DefaultListModel 分批載入或虛擬化列表。
  • 泛型警告:JComboBox (Java 7+) 避免未檢查轉型。

結語

JList 與 JComboBox 是 Swing 選擇類元件的雙子星。**記住:列表需自備滾動窗格,下拉框內建滾動**。善用模型分離與自定義渲染器,能輕鬆應對複雜業務呈現需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved