Как добавить элементы в JComboBox из списка объектов - PullRequest
0 голосов
/ 02 января 2019

Я сейчас пытаюсь создать JComboBox, который показывает мне названия различных автомобильных компонентов.Класс Component в настоящее время содержит следующие переменные:

public class Component{
     private int id;
     private String name;
     private double price;
     private int quantity; 
     private String type;

}

Теперь у меня есть другой класс, который содержит все существующие компоненты, которые были загружены из моей базы данных:

public class Stand{
     private List<Component> allComponents;

     public Stand(){
     //loads the components from my database into allComponents
     this.allComponents = componentDAO.loadComponents();


     public List<Componente> getAllComponents(){
        return this.allComponents;
     }
}

То, что я сейчас ищу, - это создать класс с именем SelectComponent с некоторыми JComboBox, которые показывают мне только имя каждого Component в качестве опции.Как мне это сделать?

Кроме того, после выбора нужного Component у меня будет еще один List<Component> в этом же классе, чтобы сохранить выбранные компоненты, так как мне нужно будет иметь более одного JComboBox вто же самое окно.Как добавить выбранный Component к этому List после его выбора?

Если вы можете настроить JComboBox так, чтобы он уже показывал компоненты для определенного типа, например, «Paint», было бы еще лучше, поскольку мне тоже понадобится помощь с этим.Пожалуйста, дайте мне знать, если мне нужно предоставить больше информации.У меня есть некоторые трудности с отслеживанием всего, что нужно, поскольку уже сделано гораздо больше.Просто пытаюсь получить идею и применить ее к моей программе.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Если вы переопределяете метод toString() (как показано ниже в коде) в своем классе Component, вы можете отобразить имя компонента в поле со списком даже без необходимости создания пользовательского средства визуализации.

@Override
public String toString()
{
  return this.name;
}
0 голосов
/ 02 января 2019

показывает мне только имя каждого компонента в качестве опции.

Создайте пользовательский рендерер для отображения свойства "name".

Код для базового рендерерабудет выглядеть примерно так:

class CarComponentRenderer extends BasicComboBoxRenderer
{
    public Component getListCellRendererComponent(
        JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

        if (value instanceof CarComponent)
        {
            CarComponent carComponent = (CarComponent)value;
            setText( carComponent.getName() );
        }

        return this;
    }
}

Затем вы устанавливаете рендерер в поле со списком, используя:

comboBox.setRenderer( new CarComponentRenderer() );

Извлеките Поле со списком с пользовательским рендерером для получения дополнительной информации.и более полное решение.

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