正如我在SceneBuilder
中看到的那样,您可以设置ImageView
的图片(如果您将项目导出为 .jar ,那么该图片将无法使用罐子。)
1)我想通过SceneBuilder
为某些fxml按钮设置图片,但我找不到任何相关内容。
2) 如果您提供有关.fxml
如何处理getClass().getResource("image.png");
的信息,那将非常有用,所以我不必在手动java文件。
修改
Fabian 和 John Vernee 的答案对于问题1和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。