JList для перечисления toString() из ArrayList объектов

У меня есть ArrayList объектов (класс под названием OrderItem). В OrderItem есть метод toString().

У меня также есть класс GUI, в котором у меня есть JList. Я хочу перечислить все toString() для элементов arrayLists.

Я знаю, что для arrayList строк вы можете показать их в JList, используя:

ArrayList<String> myArrayList  = new ArrayList<String>();
myArrayList.add("Value1");
myArrayList.add("Value2");
myJList = new JList(myArrayList.toArray());

Но я хочу перечислить методы toString() объекта arrayList, т.е. иметь что-то вроде:

ArrayList<OrderItem> myArrayList  = new ArrayList<OrderItem>();
myJList = new JList(myArrayList.toString());

Я понимаю, что есть вероятность, что JList не поддерживает такую ​​​​функцию или что с этим связана какая-то логическая проблема. Если это так, не могли бы вы сообщить мне, почему? Потому что, безусловно, массив строк должен работать аналогично toString() объекта arrayList. Я просто хочу получить значение String для элементов и использовать эти значения для своего списка.

Я искал в Интернете ответ и не смог найти ответ, который мне поможет, поэтому я пришел сюда, чтобы попытаться решить эту проблему.

Большое спасибо!


person DanMc    schedule 25.04.2012    source источник


Ответы (3)


По умолчанию JList показывает toString значение объекта. Таким образом, нет необходимости преобразовывать ваши объекты в строки.

При необходимости вы можете переопределить это поведение JList, создав собственные средства визуализации ячеек. Дополнительные сведения см. в разделе Как использовать списки.

person tenorsax    schedule 25.04.2012
comment
Ах, большое спасибо! Я тупо никогда не пробовал добавлять элементы ArrayList в JList так же, как вы добавляете в Strings. Другими словами, я не понимал, что по умолчанию отображается toString. Привет =) - person DanMc; 25.04.2012

Вы можете преобразовать список в массив, а затем поместить его в список.

ArrayList<OrderItem> myArrayList  = new ArrayList<OrderItem>();
OrderItem[] items = new OrderItem[myArrayList.size()];
myArrayList.toArray(items);
myJList = new JList(items);
person evanwong    schedule 25.04.2012

На самом деле метод toArray() отображает каждый элемент списка arrayList. JList по умолчанию ничего не показывает. Вы должны установить видимость в соответствии с вашими потребностями.

Похоже, вы пытаетесь просто отобразить метод toString объекта в списке вместо полного объекта; другими словами, вы просто хотите отобразить строковое представление. вместо представления массива.

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

ArrayList<> myNewArrayList =  new ArrayList<OrderItem>();
for (int i=0; i< oldArray.size(); i++)
{    
    newArray.add(oldArray.get)i).toString(); 
}
    ...  rest of code  ...

Затем используйте новый массив на панели и используйте индекс в качестве ссылки на массив объектов для обработки объектов.

HTH LLB

person user3872361    schedule 24.07.2014