问题
I'm aware of JList
and JComboBox
. I need the combo box drop down functionality with multiple selection functionality that JList
provides.
This is because the contents of the list are too huge to be displayed using a simple list. I also need to select multiple items, otherwise I would have been content with JComboBox
.
Any suggestions?
回答1:
When using multi-select, it's better to use a list than a combo box. As GUI metaphors go, people expect a combo box to be single select, whereas lists can be either.
the contents of the list are too huge to be displayed using a simple list
Place the JList
in a JScrollPane
. You can call setVisibleRowCount(int) on the JList
to specify how many rows at a time should be shown.
回答2:
You can make a custom cell renderer for the combobox and add checkboxes to that components, so you can check and uncheck them. You have to make something like this:
public class MyComboBoxRenderer implements ListCellRenderer {
private String[] items;
private boolean[] selected;
public MyComboBoxRenderer(String[] items){
this.items = items;
this.selected = new boolean[items.lenght];
}
public Component getListCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int index) {
// Create here a JLabel with the text
// Create here a JCheckBox
// Add them to a layoutmanager
return this;
}
public void setSelected(int i, boolean flag)
{
this.selected[i] = flag;
}
}
回答3:
If your data has a hierarchical character, consider NetBeans' Outline
component, discussed in Announcing the new Swing Tree Table and in this answer. Here's the Current Development Version of the API.
回答4:
To achieve the described functionality, I finally decided to "abuse" the JMenuBar
and add to it several JCheckBoxMenuItems
. The GUI then perfectly fits the purpose (at least for me), it is just the handling of the ItemEvent that risks to become a bit annoying.
(finally there, I defined some bit logic over the items, and then may restrict myself to handling only one type of event)
来源:https://stackoverflow.com/questions/2860250/how-to-create-a-drop-down-list-in-java-swing-with-multiple-item-selection