如何解决有没有办法在数组中加载多个 fxml,然后在按下按钮时显示其中一个而不在 javaFX 中重新加载相同的 fxml?
Netbeans IDE 8.2。
当我单击左侧菜单按钮之一时,我的程序会在同一阶段加载另一个控制器(当然还有另一个 .fxml)。没关系。
这是它的样子
问题
如果我开始对这个新控制器进行一些更改,然后我想通过单击左侧菜单按钮打开另一个控制器,我的“旧”控制器就会消失(没关系)。但是当我再次打开旧控制器时,我在该页面中所做的所有更改都消失了。
因为我知道,每次按下按钮菜单时,它都会运行:
@FXML
public void btnMenuOnAction(ActionEvent event) {
if (event.getTarget() == btnDashboard)
{
Pane newPane = null;
try {
newPane = FXMLLoader.load(getClass().getResource("Dashboard_View.fxml"));
} catch (IOException ex) {
System.out.println("Error pane Dashboard");
}
pane.getChildren().set(0,newPane);
}
else if (event.getTarget() == btnProduction)
{
Pane newPane = null;
try {
newPane = FXMLLoader.load(getClass().getResource("Prod_View.fxml"));
} catch (IOException ex) {
System.out.println("Error pane Prod");
}
pane.getChildren().set(0,newPane);
}
}
当用户从菜单中选择一个类别时,我需要能够编辑右侧的设置、切换到另一个类别并进行更多更改。如果我回到第一类,那里所做的更改仍然存在。 因此,每次用户更改类别时,FXMLLoader 都会重新加载 FXML 文件和控制器,将其中的所有控件重置为其默认值。
那么是否可以重用已加载和更改的 FXML 文件? 如何在我的程序启动之前加载每个 fxml 并在单击按钮时使其在我的窗格中可见?
解决方法
您必须在启动时(或在第一次需要时)创建每个 FXML 文件,并且每次只需将窗格设置为相同的实例。
例如
import numpy as np
img = np.array(img)
img[tuple(indices)].sum(axis = 0)
#array([5,7,9])
在Pane dashboardViewPane;
Pane prodViewPane;
initialisation
然后
dashboardViewPane = FXMLLoader.load(getClass().getResource("Dashboard_View.fxml"));
prodViewPane = FXMLLoader.load(getClass().getResource("Prod_View.fxml"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。