一段时间以来,我一直在试图找出如何用多个元素填充组合框的方法。有人可以告诉我该怎么做吗?
我正在使用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”。
任何解决方案都值得赞赏。
答案 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()));