如何使用形状设置javafx按钮图标?

时间:2014-05-08 22:13:13

标签: button javafx icons shape

我想使用一些几何形状设置我的按钮图标,例如圆形,方形等。

我还想在FXML中设置它:

<Button .....>
  <graphics>
    <group>
      <shape>
      ......
      </shape>
    </group>
  </graphics>
</Button>

有可能吗?我知道如何将图像图标加载到ImageView然后setGraphic。

TIA

1 个答案:

答案 0 :(得分:1)

按钮中的graphic可以是任何节点。诸如Shape之类的Circle是节点。

所以只需将按钮图形设置为形状即可。您甚至可以在容器(如VBox或StackPane)中放置许多形状,并将按钮的图形设置为容器,以便图形由多种形状组成。

以下是您可以在SceneBuilder 2中复制,粘贴和加载的FXML文件示例。

dontpanic

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>

<VBox spacing="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  <children>
    <Button maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="Panic">
      <graphic>
        <Circle fill="RED" radius="8.0" stroke="BLACK"/>
      </graphic>
    </Button>
    <Button maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="All OK">
      <graphic>
        <StackPane>
          <children>
            <Rectangle arcHeight="5.0" arcWidth="5.0" fill="LEMONCHIFFON" height="15.0" stroke="BLACK"
                       strokeType="INSIDE" width="15.0"/>
            <SVGPath
                content="M 1.3657704,4.938667 C 1.1462945,5.1582921 1.1462945,5.5133282 1.3657704,5.7329533 L 3.7236648,8.0924507 C 3.9431407,8.3120765 4.2979355,8.3120765 4.5174113,8.0924507 L 9.5366913,3.0697579 C 9.7561672,2.8501328 9.7561674,2.4950969 9.5366913,2.2754716 L 8.6962538,1.4344625 C 8.4767779,1.2148374 8.121983,1.2148374 7.9025071,1.4344625 L 4.6107933,4.7284147 L 3.4902099,3.6070693 C 3.270734,3.3874441 2.9159392,3.387444 2.6964632,3.6070693 L 1.3657704,4.938667 z"
                fill="GREEN"/>
          </children>
        </StackPane>
      </graphic>
    </Button>
  </children>
  <padding>
    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
  </padding>
</VBox>