Супер простой вопрос java swing jlist, который я просто не могу понять! - PullRequest
1 голос
/ 02 октября 2010

Хорошо, я работаю над домашним заданием и использую SWING для создания графического интерфейса для проекта Java, и у меня возникают проблемы с JList.

У меня есть объект customer, для которого я создал и установил атрибуты, и я хочу добавить объект в TreeMap. Я хочу подключить древовидную карту, чтобы все и все объекты на карте заполняли (в любом случае атрибут name) внутри JList.

Я много оглядывался по сторонам и вижу много о том, как кодировать эти вещи с нуля, но мало имею дело с реализацией Swing. Я поместил свой объект customer в свою карту, а затем хотел бы, чтобы мой JList отражал содержимое карты, но я не знаю, как его подключить.

    customers.put(c.getName(), c);
    this.customerList.(What can I do here? add Customer object?? I can't find what I need);

Спасибо за вашу помощь !!!

Ответы [ 2 ]

1 голос
/ 03 октября 2010

, поэтому я работаю над домашним заданием

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

Вы вынуждены использовать TreeMap для храненияобъекты?Потому что это не очень хорошая коллекция для использования с ListModel, так как вы не можете получить прямой доступ к объектам.

Или задание - просто отображение данных из объекта в JList?Если это так, то вы можете использовать DefaultListModel.Все, что вам нужно сделать, это переопределить метод toString () вашего пользовательского объекта, чтобы «атрибут имени» отображался в списке.

1 голос
/ 02 октября 2010

Вам необходимо создать пользовательскую модель списка, которая возвращает объекты для размещения в каждой строке JList.К TreeMap нельзя получить доступ с помощью индекса, поэтому вам нужно что-то еще.Итак, общая идея такова: (из JList javadoc ):

ListModel bigData = new AbstractListModel() {
    ArrayList customers;
    public int getSize() { return customers.size() }
    public Object getElementAt(int index) { return customers.get(index); }
};

JList bigDataList = new JList(bigData);

таким образом, когда вы обновляете свою коллекцию, просто вызовите revalidate() или repaint() в JListобновит его содержимое тоже.

...