Как создать выпадающий список в java swing с выбором нескольких элементов? - PullRequest
6 голосов
/ 18 мая 2010

Я знаю о JList и JComboBox. Мне нужна функция раскрывающегося списка со списком функций, предоставляемая JList.

Это потому, что содержимое списка слишком велико, чтобы его можно было отобразить с помощью простого списка. Мне также нужно выбрать несколько элементов, в противном случае я был бы доволен JComboBox.

Есть предложения?

Ответы [ 4 ]

8 голосов
/ 18 мая 2010

При использовании множественного выбора лучше использовать список, чем поле со списком. При использовании метафор GUI люди ожидают, что поле со списком будет одним выбором, тогда как списки могут быть либо.

содержимое списка слишком велико, чтобы отображаться с помощью простого списка

Поместите JList в JScrollPane. Вы можете вызвать setVisibleRowCount (int) на JList, чтобы указать, сколько строк одновременно должно быть показано.

3 голосов
/ 18 мая 2010

Вы можете сделать пользовательское средство визуализации ячеек для комбинированного списка и добавить флажки к этим компонентам, чтобы вы могли отмечать и снимать их. Вы должны сделать что-то вроде этого:

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;
    }

}
2 голосов
/ 19 мая 2010

Если ваши данные имеют иерархический характер, рассмотрим компонент Outline NetBeans, который обсуждается в Объявление новой таблицы Swing Tree и в этом ответе . Вот Текущая версия разработки API.

1 голос
/ 29 июля 2016

Чтобы достичь описанной функциональности, я наконец решил «злоупотребить» JMenuBar и добавить к нему несколько JCheckBoxMenuItems. Тогда графический интерфейс идеально подходит для цели (по крайней мере, для меня), это всего лишь обработка ItemEvent, которая может стать немного раздражающей.

(наконец, я определил некоторую битовую логику для элементов, а затем могу ограничиться обработкой только одного типа события)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...