在JavaFX中格式化文本输出

时间:2014-07-27 17:54:46

标签: javafx javafx-2 javafx-8

我想使用以下代码在用户面前打印几行:

data.stream().forEach((dataObj) ->
                        {
                            tilePane.getChildren().add(new Text(dataObj.getOne() + "        " + dataObj.getSecond() + "        " + dataObj.getTh() + "     "
                                + dataObj.getLs() + "     " + dataObj.getLast()));
                        });

但是你可以看到最终结果不是非常格式化的输出:

enter image description here

有没有办法格式化列?

1 个答案:

答案 0 :(得分:2)

有几种选择:

  1. 最简单的方法是使用等宽字体,其中包含空格的每个符号的宽度相同,最受欢迎的是Courier New:

     text.setFont(Font.font ("Courier New", 14));
    
  2. 当您以表格格式提供数据时,您可以选择使用TableView代替Text

  3. 最后,如果你真的喜欢这种字体并且不想使用TableView,你可以在4 Text个实例中拆分你的行,并将每个Text调整为在与其他行相应的坐标相同的坐标上。 E.g。

    Text t1 = new Text(dataObj.getOne());
    t1.setMinWidth(100); // adjust according to real data
    Text t2 = new Text(dataObj.getSecond());
    t2.setMinWidth(100); // adjust according to real data
    Text t3 = new Text(dataObj.getTs());
    t3.setMinWidth(300); // adjust according to real data
    Text t4 = new Text(dataObj.getLs());
    t4.setMinWidth(300); // adjust according to real data
    Text t5 = new Text(dataObj.getLast());
    tilePane.getChildren().addAll(t1, t2, t3, t4, t5);