Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JComboBox с объектами 
:(
    Опции темы
Slanix
Дата 16.3.2005, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: 1
Всего: 1



Есть некоторый класс TheObject.
У этого класса, помимо всего, есть поле name.
Хочу заполнить JComboBox этими объектами этого класса с разными значениями поля name
И что бы JComboBox отображал в списке поля name этих объектов.
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Domestic Cat
Дата 16.3.2005, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Есть метод add(Object). НАсколько я понимаю, если ты добавляешь произвольный объект, будет вызван метод toString чтобы его отобразить. Ну а из toString возвращаешь имя.
Но это криво. Лучше всего сделать свой ListCellRenderer и в нем отображать имя, полученное от объекта через myObject.getName()


--------------------

PM   Вверх
Slanix
Дата 16.3.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: 1
Всего: 1



Хотелось бы как проще, но toString уже возвращает хмл этого объекта
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Slanix
Дата 16.3.2005, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: 1
Всего: 1



Код

public class RightsComboBoxRenderer extends JLabel implements ListCellRenderer {
    
    /** Creates a new instance of PermissionComboBoxRenderer */
    public RightsComboBoxRenderer() {
    }
    
    public Component getListCellRendererComponent(
                                            JList list,
                                            Object value,
                                            int index,
                                            boolean isSelected,
                                            boolean cellHasFocus)
    {
        if (value instanceof Rights) {
            setText(value.getName());                // Здесь я не могу вызвать этот метод
        }
        
        return this;
    }    
}

Или вместо Object передавать Rights?
Добавлено @ 11:08
Помогло, если так:
Код

        if (value instanceof Rights) {
            Rights rghts = (Rights)value;
            setText(rghts.getName());
        }

Но мне кажется как-то корявенько или нет?
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Domestic Cat
Дата 16.3.2005, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Ну, instanceof необязателен, если ты ничего другого передавать не думаешь.


--------------------

PM   Вверх
ShkVal
Дата 11.8.2005, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: 1
Всего: 1



Domestic Cat, у меня такая же почти ситуация. Переопределил метод toString(), но это не помогло не понимаю почему.
Может кто подскажет как решить эту проблемму?
PM MAIL   Вверх
LSD
Дата 12.8.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Вот рабочий код:
Код
public class Test
{
  public static void main(String[] args)
  {
    JComboBox cb = new JComboBox(new Object[] {new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject()});
    JFrame frame = new JFrame();
    frame.getContentPane().add(cb);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

  public static class MyObject
  {
    private String value;
    public MyObject()
    {
      value = "Random number: " + Math.random();
    }
    
    public String toString()
    {
      return value;
    }
  }
}



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.