JavaFX如何从SceneBuilder

时间:2016-07-05 21:50:03

标签: java javafx

正如我在SceneBuilder中看到的那样,您可以设置ImageView的图片(如果您将项目导出为 .jar ,那么该图片将无法使用罐子。)

1)我想通过SceneBuilder为某些fxml按钮设置图片,但我找不到任何相关内容。

2) 如果您提供有关.fxml如何处理getClass().getResource("image.png");的信息,那将非常有用,所以我不必在手动java文件。

  

修改

Fabian John Vernee 的答案对于问题1和2都是正确的,但我只能选择一个。

资源文件夹的结构:

enter image description here

2 个答案:

答案 0 :(得分:2)

在SceneBuilder中,将 Library 中要使用的graphic节点(在本例中为ImageView)拖到层次结构中的Button 视图。将其删除,您应该会看到graphic节点显示为Button的子节点。

这将导致像这样的fxml

...
<Button mnemonicParsing="false" text="Button">
    <graphic>
        <ImageView fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" />
    </graphic>
</Button>
...

通过使用ImageView图像属性旁边的齿轮按钮,您可以选择切换到文档相对路径,指定以@开头的图像网址。输入网址image.png的{​​{1}}。将fxml保存到相对于图像的正确位置将在SceneBuilder中显示图像。

答案 1 :(得分:1)

您可以在FXML中设置ImageView的网址,如下所示:

<ImageView>
    <image>
        <Image url="@my_image.png" />
    </image>
</ImageView>

它将与图像的FXML文件位于同一文件夹中。

您可以通过从FXML引用它来设置Button的图形:

<!-- Define some ImageView -->
<fx:define>
    <ImageView fx:id="my_image">
        <image>
            <Image url="@my_image.png" />
        </image>
    </ImageView>
</fx:define>

<!-- Reference it here -->
<Button graphic="$my_image"/>

我使用javafx-jar-plugin使用apache maven的eclipse插件构建我的jar。

如果您之前使用过maven,可以在pom.xml中使用此插件:

<build>
    <plugins>
        <plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>8.5.0</version>
            <configuration>
                <mainClass>application.MainFXML</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

我已将FXML文件和图片放在src/main/resources下的同一文件夹中,因此它们会被包含在广告文件中。

使用jfx:jar目标运行maven build。