当前位置: 首页 > 知识库问答 >
问题:

javafx图像的fxml文件谁有一个变量url

商池暝
2023-03-14

我试图在谷歌上找到我的答案,但现在没有结果。

所以我很抱歉,如果这是一个已经解决的帖子。

我想做的:当我的FXML文件加载时,我希望这个文件中的图像视图从一个包含在一个字符串表中的URL加载一个图像,该字符串表中包含不同的URL,这样我就可以根据我的选择变量。我尝试过绝对路径和相对路径。

//url tab of the 2 images
public static String[] images = new String[2];

//variable that include the choice for the image to load in the tab images
public static int choice = 0;

public MainTest() {
    images[0] = "C:/Users/Stagiaire ACI/Desktop/Java/ImageTestImage/Assasin.png";
    images[1] = "C:/Users/Stagiaire ACI/Desktop/Java/ImageTestImage/Barde.png";
}

我的fxml文件控制器:

@FXML
private ImageView image;

@FXML
private void initialize() {
    Image image = new Image(MainTest.images[MainTest.choice]);
    this.image.setImage(image);
}

和我的Fxml文件:

<AnchorPane prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.test.view.TestControler">
   <children>
      <ImageView fx:id="image" fitHeight="310.0" fitWidth="319.0" layoutX="306.0" layoutY="183.0" pickOnBounds="true" preserveRatio="true" />
   </children>
</AnchorPane>

所以有了这个,我可以改变选择来改变加载的图像。当我用经典的方式加载时,我的图像效果很好。

甚至不知道这是否可能。

谢谢你!

编辑:我已经解决了我的问题,把file:放在文件url上面。

共有1个答案

胡高朗
2023-03-14

值以@开头的URL属性被FXMLLoader区别对待。它们被视为相对于文档。这在fxmls之外不起作用。

绝对文件路径也不起作用,因为它们不包含协议。

如果您的图像是一种资源,您应该使用类。getResource如果不是,则使用文件。toURI()。toURL()

images[0] = MainTest.class.getResource("/absolute/package/path/Assasin.png").toExternalForm();
images[1] = new File("C:/Users/Stagiaire ACI/Desktop/Java/ImageTestImage/Barde.png").toURI().toURL().toExternalForm();
 类似资料:
  • 我正在做一个项目,我需要在特定目录中的多个图像之间切换,以用作我程序的背景。不幸的是,我不能将所有图像路径硬编码为fxml的url,并使用fxids在每个路径之间切换,因为我有太多的图像,并且一周内都会添加新图像。我创建了一个fxid,它链接到一个特定的变量,该变量保存图像的路径。这个变量是一个路径为“@.../image/Planets/image1.png”的url。fxml正确加载按钮元素,

  • 我已经创建了一个java程序,我的程序需要一个图像在某个时候被写入后端数据库(MySQL)。 问完这个问题后,我知道我不能从已部署的jar文件中读取文件,所以我试了一下 其中11.jpg是我要使用的图像文件。在上面的代码中,我将11.jpg转换为0.txt,然后从0文本中复制所有内容并存储在String中,并执行此操作 但是我得到的图像文件不可读! 这张图片大约只有1.3kb。 我想做的可能吗?

  • 我想包括使用FXML的图标和文本按钮。 我知道在FXML中,我可以用以下代码添加图像: 但我想知道如何将其与按钮代码合并:

  • 我一直试图使用FXML在JavaFX应用程序中显示我的图像,但没有成功。我的代码: 没有错误,但我的图像没有显示。我想图像已加载,但未显示。 这可能吗?我怎么查?如果是的话,不应该有一个错误给它吗? 事实上,即使我给出了一个不正确的名称,也没有运行时错误。也许没上子弹? 我也试过加载不同的图像和改变尺寸,没有任何效果。 ->运行时错误#1 ->林特错误+运行时错误#1 ->林特错误+运行时错误#1

  • 我想创建一个带有JavaFX ChoiceBox的下拉菜单,其中每个条目由一个不同的图标组成,旁边有一个简短的文本。(例如,在语言选择器中,左边有一个小标志,右边有语言名称。) 做这件事最好的方法是什么? 我试着通过CSS来做。下面的几乎管用,但当然它会为所有条目设置相同的图标: 所以我想我可以通过或类似的方式为每个条目赋予自己的图标,但是我尝试的选择器都没有起作用。