Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在选择框中列出所有可用的系统字体_Java_Javafx 8 - Fatal编程技术网

Java 在选择框中列出所有可用的系统字体

Java 在选择框中列出所有可用的系统字体,java,javafx-8,Java,Javafx 8,我有一个选择框的场景。其目的是让所有可用的系统字体显示在选择框中,我觉得我走的是正确的道路,因为我已经设法让1显示在选择框中,但为什么只有1 这是密码- import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.stage.Stage; import javafx.scene.Scen

我有一个选择框的场景。其目的是让所有可用的系统字体显示在选择框中,我觉得我走的是正确的道路,因为我已经设法让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();

    }
}
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.stage.stage;
导入javafx.scene.scene;
导入javafx.scene.control.ChoiceBox;
导入javafx.scene.control.SingleSelectionModel;
导入javafx.scene.layout.Pane;
导入javafx.scene.text.Font;
公共类ChoiceBoxFonts扩展了应用程序
{
观察型;
选择框字体;
公共静态void main(字符串[]args)
{
应用程序启动(args);
}
公共无效开始(阶段primaryStage)
{
窗格根=新窗格();
Font.getFamilies().stream().forEach(i->{
字体=
FXCollections.observableArrayList(一)
);
});
//具有可观察arraylist字体类型的新choicebox
字体=新的选择框(fontType);
//SingleSelectionModel selMod=fonts.getSelectionModel();
root.getChildren().add(字体);
场景=新场景(root,200200);
初级阶段。场景(场景);
primaryStage.show();
}
}
实验的目标是能够从选择框中选择字体,并使用该选择更改文本对象的字体

还有,有没有更好的UI可以做这样的事情?如果有大量字体,那么选择框将会非常长

你只需要

fontType = FXCollections.observableArrayList(Font.getFamilies());
而不是你的迭代

如果有大量字体,那么选择框将会非常长

我可能会想一个.< /p> < p>你只需要

fontType = FXCollections.observableArrayList(Font.getFamilies());
而不是你的迭代

如果有大量字体,那么选择框将会非常长


<>代码>字体> .gEngices()>代码>中的每一个元素,我可能会考虑一个.< /p>,将代码< ftType < /代码>设置为包含该元素的列表。完成所有这些之后,您将得到一个只包含最后一个元素的列表。嗨,@James_D,我就是这么做的“对于Font.getFamilies()”的每个元素,使用此行代码-'Font.getFamilies().stream().forEach(i->{fontType=FXCollections.observableArrayList(i)对这些评论的格式表示歉意。嗯,是的,这正是你正在做的。这是我的观点。首先,将
fontType
设置为只包含第一个元素的列表。其次,将
fontType
设置为只包含第二个元素的列表。第三,将
fontType
设置为只包含第二个元素的列表第三个元素…那么在您完成所有这些之后,您希望
fontType
是什么?对不起,误解!”对于
Font.getFamilies()
的每个元素,将
fontType
设置为仅包含该元素的列表“。完成所有这些之后,您将得到一个只包含最后一个元素的列表。您好,@James_D,这就是我所做的?-“对于Font.getFamilies()的每个元素”,使用这行代码-'Font.getFamilies().stream().forEach(I->{fontType=FXCollections.observableArrayList(I)对这些评论的格式表示歉意。嗯,是的,这正是你正在做的。这是我的观点。首先,将
fontType
设置为只包含第一个元素的列表。其次,将
fontType
设置为只包含第二个元素的列表。第三,将
fontType
设置为只包含第二个元素的列表第三个元素…那么在你做了所有这些之后,你希望
fontType
是什么?抱歉,误解!太好了,我会调查的。谢谢。太好了,我会调查的。谢谢