java - JavaFX - 从控制器 2 传递到控制器 1 的变量在使用 System.out 检查时正确更新,但结果在标签字段中未更新
问题描述
我已经研究这个话题好几天了,但找不到能解决我的查询的答案,所以这里是 - 我的第一个 StackOverflow 问题。体贴!
我有一个带有侧边菜单和 BorderPane 类型主窗格的应用程序。在这个主窗格中是 TableView1。此窗格的内容是控制器 1的一部分,称为“检查表”。当我在 TableView1 中选择一个项目并单击一个按钮时,会弹出一个新窗口,其中包含另一个表 (TableView2),我可以在其中添加数据。此窗口的内容是控制器 2的一部分,称为“表 2”。
在控制器 1中,我有许多标签,当我关闭控制器 2窗口并将相关数据添加到 TableView2 时,它们应该会自动更新。为此,我已按照将控制器 2中更新的变量传递给控制器 1的说明进行操作,一切似乎都井然有序。我还在控制器 1的 setLabel 方法中编写了一个“System.out.println”,以确认变量是否已传递给控制器 1并位于标签字段中 - 是的,它已被传递。它似乎在那里。但是在 UI 本身中,标签字段没有更新。
似乎不知何故 UI 没有刷新,但位于它后面的代码本身是有序的。所有 fx:id 值都已分配,所有 fx:controller 值也在 FXML 文件中分配。
这是控制器 2 'Table2' 中调用更新控制器 1 ' checksheet' 中标签的方法
String data1 = Double.toString(lengthTD);
FXMLLoader loader = new FXMLLoader(getClass().getResource("CheckSheetUI.fxml"));
AnchorPane mainPane = (AnchorPane) loader.load();
Checksheet cs = loader.getController();
cs.setLabel2(data1);
这是控制器 1 'checksheet'中的设置器
public void setLabel2(String data2) {
totalToDateBox.setText(data2);
System.out.println(totalToDateBox.getText()); // this does return the correct value in the console }
关于为什么 UI“ChecksSheetUI.fxml”中的标签没有更新的任何想法?我觉得这与处理边框窗格有关,因为我在其他地方遵循了代码,但这似乎不起作用。
顺便说一句(如果相关),我有一个总体控制器,用于调整主窗格中包含的内容(因为我有几个链接的不相关的 FXML 文件)。
public class FXMLDocumentController extends Main {
@FXML
public BorderPane mainPane;
@FXML
private Button btn_dmg27, btn_staySafe, btn_checkSheet;
@FXML
private void buttonAction(ActionEvent event) throws IOException {
if(event.getSource() == btn_dmg27)
{
Parent parent1 = FXMLLoader.load(getClass().getResource("dmg27UI.fxml"));
mainPane.setCenter(parent1);
}
else if(event.getSource() == btn_staySafe)
{
Parent parent1 = FXMLLoader.load(getClass().getResource("staySafeUI.fxml"));
mainPane.setCenter(parent1);
}
else if(event.getSource() == btn_checkSheet)
{
Parent parent1 = FXMLLoader.load(getClass().getResource("CheckSheetUI.fxml"));
mainPane.setCenter(parent1);
} }
解决方案
尝试在 scenebuilder 的标签上输入一些文本来测试标签的属性。
推荐阅读
- java - 启动画面完成后应用程序不断崩溃
- excel - 根据下拉选择更新列
- c# - 在 ASPX 和 ASP.Net 条件下,无需更改文件夹即可重写 URL
- ios - 如何在应用启动时播放动画以及如何在 GitHub 上使用 SwiftyGif?
- python - 需要从列表列表中选择对应的最大值
- excel - VBA宏:比较/检查3张纸并返回差异值
- assembly - 关于汇编语言的问题:错误:未知指令
- python - 如何将一列从熊猫数据框中复制到另一列,同时匹配两者中公共列的值?
- r - 跨多个数据帧的 lat long 之间的最小距离
- wordpress - WooCommerce 中使用的 Bootstrap 等效项