2016-05-27 7 views
0

Вот вещь:Java: Получить список <> элементы из одного класса в JComboBox другого класса

Я создал программное обеспечение «cocktailbar», и у меня есть следующие классы:

  • коктейль,
  • CocktailBar,
  • CreateNewCPanel,
  • HelloPanel,
  • SearchCPanel,
  • ShowAllCPanel,
  • CocktailMixerGUI,
  • Состав.

Сейчас: При добавлении нового Cocktail в CreateNewCPanel, добавить коктейль в список в CocktailBar классе.

Box buttonBox = Box.createHorizontalBox(); 
JButton speicherButton = new JButton("Speichern"); 
speicherButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e){ 
     neuerC.setCName(cName.getText()); 
     neuerC.fuegeZubereitungHinzu(zubereitungTextArea.getText()); 
     CocktailBar.addCocktail(neuerC); 

Теперь мне нужно, чтобы увидеть все созданные коктейли в меню «выпадающего» в ShowAllCPanel. Я получил следующее:

//Adding the DropDown Menu, first a Box, then a ComboBox inside. 
Box cDropDownBox = Box.createHorizontalBox(); 
cDropDownBox.add(Box.createHorizontalGlue()); 

JComboBox cChoose = new JComboBox(); 
groesseEinsetzen(cChoose, 500, 20); 

cChoose.setAlignmentX(SwingConstants.LEFT); 
cDropDownBox.add(cChoose); 

Но теперь мне интересно, как я могу получить свой список из CocktailBar класса в ShowAllCPanel?

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

 cChoose.addItem(CocktailBar.getCocktails()); 

в COMBOBOX в ShowAllCPanel, но он не показывает что-нибудь в выпадающем списке.

благодаря @Do Re, я подставила:

//Adding the DropDown Menu, first a Box, then a ComboBox inside. 
    Box cDropDownBox = Box.createHorizontalBox(); 
    cDropDownBox.add(Box.createHorizontalGlue()); 

    JComboBox cChoose = new JComboBox(); 

    if (CocktailBar.getCocktails() != null){ 

     for (Cocktail c : CocktailBar.getCocktails()) 
      cChoose.addItem(c); 
    } 

, но все же - при запуске, выпадающий список остается пустым.

+1

есть ваш пытались createing в 'getter'for список? –

+0

Да, я забыл упомянуть, что ... я попробовал: cChoose.addItem (CocktailBar.getCocktails()); но он, похоже, не работает –

+1

Что делает 'getCocktails()' return? Какая ошибка? –

ответ

0

Как вы упомянули в комментариях, вы создали геттер для коктейлей.

Try что-то вроде этого

for (Coctail c : CocktailBar.getCocktails()) 
    cChoose.addItem(c); 

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

Редактировать

попробовать

cDropDownBox.revalidate(); 
cDropDownBox.repaint(); 

или

cChoose.revalidate(); 
cChoose.repaint(); 
+0

где я должен его поставить? я попробовал это перед тем, как dropdownbox добавлен в ярлык, без эффекта –