gpt4 book ai didi

java - fxml - 从属性读取值

转载 作者:行者123 更新时间:2023-12-02 03:57:53 25 4
gpt4 key购买 nike

我是fxml新手,我仍在尝试解决一些问题。通常,当我开发时,我会创建一些 *.properties 文件,用于从中读取值。

这就是我通常做的事情:

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:${JBOSS_HOME}/standalone/configuration/someproject/properties/project.properties
</value>
</list>
</property>
</bean>

然后,当我声明我的 bean 时,我只是读取我想要的任何值。像这样的事情:

<bean id="test" class="my.package.MyClass">
<property name="variable" value="${some.value}" />
</bean>

现在,我一直在搜索如何在 fxml 中执行类似的操作,但我似乎找不到任何东西。我很抱歉我对此很菜鸟,但是可以用 fxml 做这种事情吗?

比如下面的代码,是否可以外部定义图片的url:

<VBox alignment="CENTER" styleClass="header" stylesheets="@../styles/some.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<AnchorPane>
<children>
<ImageView AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="22.0">
<image>
<Image url="@../img/image.png" />
</image>
</ImageView>
</children>
</AnchorPane>

PS:我正在尝试开发一个独立的应用程序,但我仍然想在外部配置一些值,而不必在需要更改某些内容时生成新的版本。

非常感谢。

最佳答案

执行此操作的另一种方法是在 FXMLLoader 中分配资源包。

FXMLLoader loader = new FXMLLoader();
loader.setResources(ResourceBundle.getBundle("propertyreader.application"));
Parent root = loader.load(
getClass().getResourceAsStream(
"about.fxml"
)
);

访问语法略有不同(使用 % 而不是 ${)。

<Label fx:id="version" text="%version"/>

示例应用

示例应用程序假设所有文件都位于名为 propertyreader 的包中。

property reader pic

application.properties

version=1

about.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>

<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="400.0" spacing="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<Label text="Property Reader Version:"/>
<Label fx:id="version" text="%version"/>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
</HBox>

PropertyReaderApp.java

package propertyreader;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;
import java.util.ResourceBundle;

public class PropertyReaderApp extends Application {
@Override
public void start(Stage stage) throws IOException {
FXMLLoader loader = new FXMLLoader();
loader.setResources(ResourceBundle.getBundle("propertyreader.application"));
Parent root = loader.load(
getClass().getResourceAsStream(
"about.fxml"
)
);

stage.setScene(new Scene(root));
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}

关于java - fxml - 从属性读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32570486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com