我有一个带有选择框的场景。目的是让所有可用的系统字体显示在选择框中,我觉得我走在正确的道路上,因为到目前为止我已经设法在选择框中显示1,但为什么只有1?
这是代码 -
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.SingleSelectionModel;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
public class ChoiceBoxFonts extends Application
{
ObservableList<String> fontType;
ChoiceBox<String> fonts;
public static void main(String [] args)
{
Application.launch(args);
}
public void start(Stage primaryStage)
{
Pane root = new Pane();
Font.getFamilies().stream().forEach(i ->{
fontType =
FXCollections.observableArrayList(i
);
});
// New choicebox with observable arraylist fontType
fonts = new ChoiceBox<String> (fontType);
//SingleSelectionModel<String> selMod = fonts.getSelectionModel();
root.getChildren().add(fonts);
Scene scene = new Scene(root,200,200);
primaryStage.setScene(scene);
primaryStage.show();
}
}
实验的目标是能够从选择框中选择一种字体,并使用该选择更改文本对象的字体。
此外,是否有更好的用户界面可以做这样的事情?如果有一堆桶的字体,那个选择框就会很长!
答案 0 :(得分:2)
你只需要
fontType = FXCollections.observableArrayList(Font.getFamilies());
而不是你的迭代。
如果有一大堆字体,那个选择框会很长!
我可能会考虑ListView
。