JavaFX ListView不支持String.format?

时间:2015-03-27 08:04:01

标签: java string listview javafx format

在使用JavaFX时,我发现当我想显示格式化字符串时,格式在列表本身中不起作用。如果我尝试在控制台中打印它,它工作正常。代码:

package listviewtest;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.stage.Stage;

public class FXMLDocumentController extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("Listview string format test");
    ListView<String> view = new ListView();
    populateView(view);
    primaryStage.setScene(new Scene(view, 800, 500));
    primaryStage.show();
}

private void populateView(ListView view) {
    String output;
    ObservableList<String> outputList = FXCollections.observableArrayList();

    //first outputstring
    output = String.format("%-50s%-50s%-50s", "shortText", "shortText", "shortText");
    System.out.println(output);
    outputList.add(output);

    //second outputstring
    output = String.format("%-50s%-50s%-50s", "thisIsALongerTextThanBefore", "thisIsALongerTextThanBefore", "thisIsALongerTextThanBefore");
    System.out.println(output);
    outputList.add(output);

    view.setItems(outputList);
}
}

有人知道发生了什么事吗?

1 个答案:

答案 0 :(得分:2)

您需要在ListView中设置等宽字体。只需将其添加到您的css文件中:

.list-cell 
{
    -fx-font-family: "monospace";
}

或更好:使用TableView,因为您有多列。