如何在Javafx中组合字符以创建图标?

如何在Javafx中组合字符以创建图标?,java,javafx,fonts,icons,fxml,Java,Javafx,Fonts,Icons,Fxml,在Windows中,您可以组合字符来构建图标: 在Javafx中是否有一种等效的方法来创建Javafx按钮的图标 (最好是FXML格式) 编辑: 下面是我当前在FXML中添加按钮的方式: <Button text="&#xE700;"> <font> <Font name="Segoe MDL2 Assets" size="14.0" /> </font> </Button> 回答: 在下面答案的帮助下

在Windows中,您可以组合字符来构建图标:

在Javafx中是否有一种等效的方法来创建Javafx按钮的图标

(最好是FXML格式)

编辑: 下面是我当前在FXML中添加按钮的方式:

<Button text="&#xE700;">
  <font>
    <Font name="Segoe MDL2 Assets" size="14.0" />
  </font>
</Button>

回答:

在下面答案的帮助下,我使用了这个FXML:

<Button>
    <graphic>
        <StackPane style="-fx-background-color: transparent;">
            <Label text="A" />
            <Label text="B" />
        </StackPane>
    </graphic>
</Button>

为了演示,我使用了以下两幅图像:


要构造如下所示的按钮:

堆叠图像并用作按钮的图形节点:

private static final String[] images = {
        "https://i.imgur.com/g52UeNO.png",
        "https://i.imgur.com/kvHOLJ4.jpg",
};

ImageView imageView1 = new ImageView(images[0]);
ImageView imageView2 = new ImageView(images[1]);
StackPane sp = new StackPane(imageView1, imageView2);
Button button = new Button("", sp);
编辑:要堆叠字符,请使用:

Text t1 = new Text(Character.toString('O'));
t1.setFont(Font.font ("Verdana", 20));
t1.setFill(Color.RED);
Text t2 = new Text(Character.toString('x'));
t2.setFont(Font.font ("Verdana", 12));
t1.setFill(Color.BLUE);
StackPane sp = new StackPane(t1, t2);
Button button = new Button("", sp);

可能是一个
堆栈窗格
?为了得到一个真正的答案,你需要更具体地描述你的需求和实现。我不认为StackPane是正确的方法。为什么它不是正确的方法?您可以向按钮添加一个
StackPane
。Zephyr指的是te
按钮的使用。graphic
属性。
按钮.text
属性不提供将字符置于彼此之上的功能。问题中不清楚您是如何将这些符号集成到按钮中的。我更新了我的问题,以包括我目前是如何做到这一点的。在本例中,使用StackPane嵌入两个字符的FXML表示法是什么?但这是一个图像。合并unicode字符怎么样?另外,在FXML中如何实现这一点?他使用的是特定的字体(Segoe MDL2资产),而不是图像,并希望对这些字形进行分层。我的工作机器没有安装这种字体,或者JavaFX似乎不支持开箱即用的字体。在我的问题中,我使用Segoe MDL2 Assets字体,但您可以使用任何您喜欢的字体。如果它可以使用一种字体,那么它应该可以使用任何字体。所以,即使你可以用Arial字体,请告诉我怎么做。