Как я могу заполнить ComboBox элементами очереди? - PullRequest
0 голосов
/ 27 декабря 2018

Я некоторое время пытался выяснить, как заполнить комбинированный список несколькими элементами из очереди.Может кто-нибудь сказать мне, как это сделать?

Я использую JavaFX (без сцены) и последнюю версию 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], то поле со списком должно отображаться в порядке сверху вниз «Решить для», «2.3», «4.2», «7.1».

Однако мне удалось добиться того, чтобы в выпадающем списке отображалось «Решить для», «7.1».

Любые решения приветствуются.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Рассмотрите возможность использования потока:

    ComboBox<String> cBox = new ComboBox<>();
    cBox.getItems().add("Solve for");
    cBox.getItems().addAll(queue.stream().map(String::valueOf).
                                                       collect(Collectors.toList()));
0 голосов
/ 27 декабря 2018

Вам нужно всего лишь повторить 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());
}
...