如何用Queue元素填充ComboBox?

时间:2018-12-27 05:03:31

标签: java javafx combobox queue populate

一段时间以来,我一直在试图找出如何用多个元素填充组合框的方法。有人可以告诉我该怎么做吗?

我正在使用JavaFX(无SceneBuilder)和最新版本的Java。我尝试使用迭代器,但是只能将一个元素成功填充到组合框中。

i1.getItems().addAll ( //combobox code
            "Solve for",
        //queue elements here
);


//interator code. Other class calls it.
itrVelocity = velAns.iterator();

    while (itrVelocity.hasNext()) {
        SPH3U.velocity = itrVelocity.next();
    }

如果队列具有以下元素[2.3、4.2、7.1],则组合框应按从上到下的顺序显示“ Solve for”,“ 2.3”,“ 4.2”,“ 7.1”。

但是,我仅成功使组合框显示“ Solve for”,“ 7.1”。

任何解决方案都值得赞赏。

2 个答案:

答案 0 :(得分:1)

您只需要迭代Queue并将元素放入ObservableList

ComboBox<String> box = new ComboBox<>();
box.getItems().add("Solve for");

// Assuming generic type of Queue based on your question
Queue<Double> queue = ...; // get instance from somewhere
while (!queue.isEmpty()) {
    box.getItems().add(queue.remove().toString());
}

或者,如果您不想消耗Queue,则可以执行以下操作:

for (Double element : queue) {
    box.getItems().add(element.toString());
}

答案 1 :(得分:0)

考虑使用流:

    ComboBox<String> cBox = new ComboBox<>();
    cBox.getItems().add("Solve for");
    cBox.getItems().addAll(queue.stream().map(String::valueOf).
                                                       collect(Collectors.toList()));