JavaFX ListView 不支持 String.format?
JavaFX ListView doesn't support String.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);
}
}
有人知道怎么回事吗?
您需要在ListView 中设置等宽字体。只需将此添加到您的 css 文件:
.list-cell
{
-fx-font-family: "monospace";
}
或者更好:使用 TableView,因为您有多个列。
在使用 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);
}
}
有人知道怎么回事吗?
您需要在ListView 中设置等宽字体。只需将此添加到您的 css 文件:
.list-cell
{
-fx-font-family: "monospace";
}
或者更好:使用 TableView,因为您有多个列。