使用的样式仅FXML一个JavaFX 2按钮 - 如何将图像添加到一个按钮?(Styling a J

2019-09-01 18:45发布

我想换一个按钮的造型,这里的大部分线程,并在互联网上的文章说明了如何使用Java代码,我不认为这是一个真正好的解决办法做了,有什么办法,例如向设置一些文本和仅使用FXML(无CSS),它里面的所有图像的按钮?

Answer 1:

只使用FXML解决方案

作为tarrsalah指出,CSS是这样做的推荐的方法,虽然你也可以做到这一点在FXML如果你喜欢:

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <Button layoutX="104.0" layoutY="81.0" mnemonicParsing="false" text="Love&#10;Potion">
      <font>
        <Font size="30.0" />
      </font>
      <graphic>
        <ImageView fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
          <image>
            <Image url="http://icons.iconarchive.com/icons/mirella-gabriele/fantasy-mediaeval/128/Poison-red-icon.png" />
          </image>
        </ImageView>
      </graphic>
    </Button>
  </children>
</AnchorPane>

为了获得上述SceneBuilder ,拖动ImageView一个顶部Button ,它会自动设置为按钮的图形。 然后选择ImageView并在SceneBuilder属性窗格输入图像的URL到的ImageView像场。

打开上述FXML在SceneBuilder看到下面的图片。


备用的CSS属性

替代CSS的-fx-background*属性。

  • -fx-graphic
  • -fx-padding
  • -fx-content-display
  • -fx-graphic-text-gap

这些仅仅是不同的,不一定是更好地为你正在尝试做的。 这仅仅是一个喜好的东西来用哪个。 我找到这些设置更容易比使用-fx-background*设置。 他们是更严格,但语法和选项更容易让我理解及其含义映射到的JavaDoc API的标记 。

的属性的详细描述是在CSS参考指南 。

下面是一个风格设置嵌入FXML图形为例,尽管它始终是最好的风格信息进行分离到一个单独的CSS样式表作为tarrsalah的样本。

<Button layoutX="138.0" layoutY="226.0" mnemonicParsing="false" style="-fx-graphic: url('http://icons.iconarchive.com/icons/mirella-gabriele/fantasy-mediaeval/128/Poison-red-icon.png')" text="Love&#10;Potion">
  <font>
    <Font size="20.0" />
  </font>
</Button>

用于将图像添加到只使用Java代码按钮相关的解决方案

  • JavaFX的-创建图像的自定义按钮
  • 添加图片到一个按钮在特定位置的JavaFX


Answer 2:

FXML是只用于设计布局,为造型可以使用CSS并从引用它FXML文件:

 <stylesheets>
    <URL value="@main.css" />
  </stylesheets>

将图像添加到一个fx:id="btn"在您的按钮css

#btn {          
    -fx-background-image: url("Add.png");
    -fx-background-size: 18 18;
    -fx-background-repeat: no-repeat;
    -fx-background-position:left;   
}

这Github上库提供一个完整的运行例子:



Answer 3:

(参考文献#btn {在评论#3)一对夫妇的变化的我的CSS例如由:

-fx-background-size: 100% 100%;
-fx-background-color: transparent;  

这样取出按钮轮廓,并只留下图像。 我能够到按钮选择的场景生成器调整就像一个ImageView的看到实时画面变化。 我添加了一个工具提示解释图像,因为没有文字,没有按钮轮廓。 我打算使用的技术在其他地方解释和点击时给予更多的视觉反馈,该图像是一个按钮改变图像。

另外请注意:我需要指定在“CSS ID”(场景生成器),而不是按钮ID“外汇:身份证”,让他们联系起来。

添加这些变化是什么解释上面让我实现我的目标:有一个按钮,看起来像只图像(例如方形按钮,圆形)。



文章来源: Styling a JavaFX 2 button using FXML only - How to add an image to a button?