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"按钮来获取用户选择的内容。选中的内容将会显示在下方的文本域中。
希望这个例子可以帮到你!如果还有其它问题,请随时提问。
【相关推荐】