Jlist, связанный с DefaultListModel, возможно ли отображать только определенные элементы?

Можно ли связать или показать только некоторые из ListModel или List, когда я привязываю его к элементу Jlist?

В моем примере у меня есть модель списка, созданная из массива класса (пиццы), который имеет несколько переменных. Я хочу показать только одну, но все они отображаются в строке.

  listModel = new DefaultListModel();
  listModel = ListHandler.populateListModel(listModel); 
  // This returns listModel binded from array of a class<Pizza>

  list = new JList(listModel);
  list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  list.setSelectedIndex(0);
  JScrollPane listScrollPane = new JScrollPane(list);
  Apanel.add(listScrollPane, BorderLayout.CENTER);

Этот код, когда затем отображает все элементы в пицце в строке. Можно ли просто показать 1 переменную из пиццы? Сыр, например, только в списке... ?


person Ryan86    schedule 24.04.2015    source источник
comment
Что-то вроде этого?   -  person MadProgrammer    schedule 24.04.2015
comment
1) Чтобы быстрее получить помощь, опубликуйте MCVE (минимальный полный проверяемый пример) или SSCCE (краткий, автономный, правильный пример). 2) Кстати, когда дело доходит до фильтрации, я бы использовал один столбец JTable.   -  person Andrew Thompson    schedule 24.04.2015
comment
@MadProgrammer Нет, я не пытаюсь фильтровать ... просто весь вывод каждого класса в списке сбрасывается построчно (для каждого элемента) в Jlist ... я хотел бы показать только переменный класс ... например pizza.chesseType или ??elementdata[0].chesseType ?? в рекурсивном списке..   -  person Ryan86    schedule 24.04.2015
comment
Затем нам нужно увидеть работающий пример   -  person MadProgrammer    schedule 24.04.2015


Ответы (1)


Средство визуализации ячеек по умолчанию вызывает toString() для объектов значений в вашей модели. Вы можете сделать одно из следующих действий:

  • Переопределите/измените значение, возвращаемое toString(), чтобы оно было текстом, который вы хотите показать
  • Измените средство визуализации ячеек, чтобы отформатировать объект значения иначе, чем по умолчанию.

Я бы предпочел второе, так как вы можете захотеть, чтобы toString() имел другое конкретное значение по какой-то другой причине.

См. http://docs.oracle.com/javase/7/docs/api/javax/swing/ListCellRenderer.html

person Mike Tunnicliffe    schedule 24.04.2015