Java:获取列表<>从一个类到另一个类的JComboBox的项

时间:2016-05-27 10:41:17

标签: java swing list jcombobox

这就是事情:

我创建了一个鸡尾酒吧'软件,我有以下几个类:

  • 鸡尾酒,
  • 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类中有一个getter,我已经尝试过了:

        cChoose.addItem(CocktailBar.getCocktails());

在ShowAllCPanel的comboBox中,但它不会在下拉列表中显示任何内容。

感谢@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 个答案:

答案 0 :(得分:0)

正如你在评论中提到的那样,你为鸡尾酒创造了一个吸气剂。

尝试这样的事情

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

这会迭代鸡尾酒列表并单独添加每个项目,而不是一次添加鸡尾酒列表。

修改

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

cChoose.revalidate();
cChoose.repaint();