【发布时间】:2019-05-31 13:17:19
【问题描述】:
所以,我在 FXML 中制作了一个菜单并且我使用了一个组,所以我必须设置一个 prefWidth 否则它看起来很奇怪。为此,我想在控制器中使用屏幕宽度初始化一个变量,然后在 FXML 中设置菜单时使用宽度变量。但我就是找不到办法。
概括这个问题,我想在控制器中初始化一个变量,然后像这样在 FXML 中使用它:
[控制器]
package sample;
import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable {
@Override
public void initialize (URL url, ResourceBundle resourceBundle) {
String text = "test";
}
}
[FXML]
<?import javafx.scene.control.Label?>
<?import javafx.scene.BorderPane?>
<BorderPane>
<center>
<label text="<!--use var 'text' here-->"/>
</center>
</BorderPane>
我知道,还有其他方法可以做到这一点(比如 id-ing 和在控制器中设置文本),但我只是想看看是否可以这样做。
【问题讨论】:
-
这个问题没有意义。这让我觉得你没有真正理解使用
FXML创建节点时发生的事情以及FXML和代码之间的关系。如果您详细描述您的问题,而不是试图就您提出的问题解决方案寻求帮助,这可能是最好的。 -
您可以在加载 fxml 时添加
ResourceBundle。这允许您使用通过text="%key"定义在包中的字符串。指定字符串以外的变量是相当困难的。我强烈建议使用此处介绍的一种方法:stackoverflow.com/questions/14187963/… 请注意,虽然initialize方法运行 在创建 fxml 文件中指定的所有节点之后。 .. -
你能发布代码来显示你的菜单宽度问题吗?另外,详细解释问题是什么以及您要达到的目标。请参阅:How to create a Minimal, Complete, and Verifiable example。