java开发GUI程序应用

java Swing 的下拉框JComboBox可编辑可多选示例
上面的代码经测试,很好用!!但是请教多选后的内容如何获取,还请指教,谢谢!!

要获取Java Swing中JComboBox的多选内容,可以使用JComboBox的getSelectedItems()方法。

该方法返回一个Object[]数组,其中包含当前选中的所有项。您可以通过遍历该数组来获取选中的每个项。

以下是一个示例代码,演示如何使用getSelectedItems()方法获取JComboBox的多选内容:

JComboBox<String> comboBox = new JComboBox<>(new String[] {"Item 1", "Item 2", "Item 3"});
comboBox.setEditable(true);
comboBox.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

// 添加事件监听器以获取选中的项
comboBox.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // 获取选中的项
        Object[] selectedItems = comboBox.getSelectedItems();
        
        // 遍历数组并输出每个选中的项
        for (Object selectedItem : selectedItems) {
            System.out.println(selectedItem);
        }
    }
});

在上面的示例中,我们创建了一个可编辑且支持多选的JComboBox,然后添加了一个事件监听器,以便在用户选择项时获取选中的内容。通过调用getSelectedItems()方法,我们获取到一个包含所有选中项的Object[]数组,然后遍历该数组并输出每个选中的项。

【以下回答由 GPT 生成】

要获取用户在多选后选择的内容,可以使用JComboBox的getSelectedItems()方法。但是需要注意的是,getSelectedItems()方法只适用于多选模式下的JComboBox,所以首先需要设置JComboBox的选择模式为MULTIPLE_INTERVAL_SELECTION。

下面是一个示例代码,展示了如何实现可编辑和多选的JComboBox,并获取用户在多选后选择的内容:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;

public class MultiSelectComboBoxExample extends JFrame {
    private JComboBox<String> comboBox;
    private JTextArea selectedItemsTextArea;

    public MultiSelectComboBoxExample() {
        setTitle("Multi Select Combo Box Example");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());

        String[] items = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"};
        comboBox = new JComboBox<>(items);
        comboBox.setEditable(true);
        comboBox.setMaximumRowCount(4);
        comboBox.setPrototypeDisplayValue("XXXXXXXXXX"); // 设置下拉框的宽度

        DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
        selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        comboBox.setComponentPopupMenu(createPopupMenu());
        comboBox.setUI(new MetalComboBoxUI() {
            protected ComboPopup createPopup() {
                BasicComboPopup popup = new BasicComboPopup(comboBox) {
                    protected JScrollPane createScroller() {
                        JScrollPane scroller = new JScrollPane(list);
                        scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
                        return scroller;
                    }
                };
                popup.getAccessibleContext().setAccessibleParent(comboBox);
                return popup;
            }
        });

        selectedItemsTextArea = new JTextArea();
        selectedItemsTextArea.setPreferredSize(new Dimension(200, 100));

        JButton getSelectedItemsButton = new JButton("Get Selected Items");
        getSelectedItemsButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Object[] selectedItems = comboBox.getSelectedObjects();
                if (selectedItems != null) {
                    selectedItemsTextArea.setText(Arrays.toString(selectedItems));
                }
            }
        });

        add(comboBox);
        add(getSelectedItemsButton);
        add(selectedItemsTextArea);

        pack();
        setVisible(true);
    }

    private JPopupMenu createPopupMenu() {
        JPopupMenu popupMenu = new JPopupMenu();
        popupMenu.add(createSelectAllItem());
        popupMenu.add(createClearSelectionItem());
        return popupMenu;
    }

    private JMenuItem createSelectAllItem() {
        JMenuItem item = new JMenuItem("Select All");
        item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int itemCount = comboBox.getItemCount();
                ListSelectionModel selectionModel = comboBox.getSelectionModel();
                selectionModel.setSelectionInterval(0, itemCount - 1);
            }
        });
        return item;
    }

    private JMenuItem createClearSelectionItem() {
        JMenuItem item = new JMenuItem("Clear Selection");
        item.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                comboBox.setSelectedIndex(-1);
            }
        });
        return item;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new MultiSelectComboBoxExample();
            }
        });
    }
}

运行这个示例代码后,你就可以多选ComboBox中的选项,并点击"Get Selected Items"按钮来获取用户选择的内容。选中的内容将会显示在下方的文本域中。

希望这个例子可以帮到你!如果还有其它问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^