Я знаю JList
и JComboBox
. Мне нужно поле комбинированного списка выпадающая функциональность с функциональностью множественного выбора это JList
обеспечивает.
Это вызвано тем, что содержание списка слишком огромно, чтобы быть отображенным с помощью простого списка. Я также должен выбрать несколько объектов, иначе я был бы доволен JComboBox
.
Какие-либо предложения?
При использовании мультивыбора лучше использовать список, а не комбобокс. В метафорах GUI люди ожидают, что комбобокс - это одиночный выбор, в то время как списки могут быть либо.
содержимое списка слишком велико, чтобы отобразить его с помощью простого списка
Поместите JList
в JScrollPane
. Вы можете вызвать setVisibleRowCount(int) на JList
, чтобы указать, сколько строк за раз должно быть показано.
Вы можете создать собственное средство визуализации ячеек для поля со списком и добавьте флажки к этим компонентам, чтобы вы могли отмечать и снимать их. Вы должны сделать что-то вроде этого:
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;
}
}
Если ваши данные имеют иерархический характер, рассмотрите компонент NetBeans Outline
, описанный в Объявление новой таблицы Swing Tree Table и в этом ответ . Вот Текущая разрабатываемая версия API.