对话结果

时间:2016-10-16 21:35:37

标签: java dictionary javafx dialog alignment

我有一张地图,上面有我的小算法的“基准”数据。 键表示基准的名称,值所需的时间。 我想创建一个Dialog,以易于阅读的方式列出这些结果。 这是我到目前为止所得到的:

Platform.runLater(() -> {
    Dialog<Object> dialog = new Dialog<>();
    dialog.setTitle("Result");
    DialogPane pane = dialog.getDialogPane();
    VBox list = new VBox();
    for (Entry<String, Long> entry : resultMap.entrySet()) {
        BorderPane box = new BorderPane();
        box.setLeft(new Text(entry.getKey() + ": "));
        box.setRight(new Text(entry.getValue().toString() + "ms"));
        list.getChildren().add(box);
    }
    list.getChildren().add(new Text("Check: " + (logic.getResult() ? "PASSED" : "FAILED")));
    pane.getChildren().add(list);
    //pane.setPrefSize(pane.getPrefWidth(), 200); needed otherwhise the dialog is cut off
    dialog.show();
});

这有很多问题。

  • 此对话框因任何原因无法关闭。
  • “时间”结果是 左对齐而不是右对齐。

它在场景构建器中适用于我,但因为我需要动态生成那些不可能的选择。

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

有关关闭对话框的规则在“对话框结算规则”下的Dialog documentation中有所描述。简而言之,您需要添加某种按钮,您可以使用

pane.getButtonTypes().add(ButtonType.OK);

list的布局无法正常工作的原因是您使用

pane.getChildren().add(list);

对话框窗格具有特定结构(再次参见documentation),如果您“盲目地”将节点添加到子项列表中,则对话框窗格不知道如何管理它。请改用setContent(...)

// pane.getChildren().add(list);
pane.setContent(list);

这也可以避免设置对话框窗格的首选大小。