我是Javafx
的新手,我有一个menuBar
和多个场景,我可以使用MenuBar
在它们之间切换,所有工作都很好,直到我尝试在单击菜单项时做一些事情而不是显示场景。
我试图通过使用方法reload(),在textfield
类中调用nom
中显示一些文字
homeControllerEnfantcontroller
,在那里我有菜单项action methods,我调用reload()
在单击菜单项时将文本写入enfantView
方法中的文本字段,但在加载该场景的控制器后,什么都没有发生。这是我的代码:
类
public class EnfantController implements Initializable {
@FXML
private TextField nom;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
public void reload() {
this.nom.setText("vndghj");
}
}
家庭控制器类
public class CrechHomeController implements Initializable {
/**
* Initializes the controller class.
*/
@FXML
private BorderPane borderPane;
private AnchorPane enfant;
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
// TODO
enfant = FXMLLoader.load(getClass().getResource(("/Views/Enfant.fxml")));
} catch (IOException ex) {
Logger.getLogger(CrechHomeController.class.getName()).log(Level.SEVERE, null, ex);
}
}
@FXML
public void enfantItemAction() throws IOException {
// getting the controller class and execute the reload method
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/Views/Enfant.fxml"));
loader.load();
EnfantController enfantController = loader.getController();
enfantController.reload();
borderPane.setCenter(enfant);
}
}
我知道我可能忽略了一些东西,但我不知道它是什么,帮助将不胜感激。
在initialize
方法中加载fxml。
在enfantItemAction
中,再次加载fxml并使用创建的控制器,但显示在initialize
方法中创建的节点。
您需要使用加载您显示的fxml时创建的控制器,例如。
@FXML
public void enfantItemAction() throws IOException {
// getting the controller class and execute the reload method
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/Views/Enfant.fxml"));
Node node = loader.load();
EnfantController enfantController = loader.getController();
enfantController.reload();
borderPane.setCenter(node);
}
或者,您也可以将加载fxml文件时创建的控制器存储在字段中的initialize
方法中,而不在enfantItemAction
方法中再次加载fxml。
我正在设计一款跳棋游戏,一旦游戏结束,一个新窗口就会打开,你可以开始一个新游戏,也可以退出。我对JavaFX了解不多,我一直在努力让我的代码正常工作,但我没有成功。。。 我有一个困难,我的电路板没有显示为fxml文件,但它是用Java代码创建的,并放在我的边框窗格的中心。边框窗格的顶部是fxml文件。然后,游戏结束后的另一个窗口也是另一个fxml文件: 这个fxml文件的Controller类如下
我想从我用FXMLoader加载的场景中获取控制器。用例是: > 我的 JSON 管理器收到一个 JSON 对象 我启动的任务显示一个新的场景 在那之后,我有空旷的场景。 现在我这样做来填充组件 我的问题是,有没有更简单的方法来做到这一点?我有一个在 FXML 中指定的控制器 我想获得具有绑定值的实例(在本例中称为name的TextField) 提前谢谢
null 我在TopMenuButtons中有一个按钮,它具有openAssisstantStage()方法,打开新的小阶段: 对于这个阶段,我还有FXML文件和控制器(AssisstantController)。只有2个按钮-第一个按钮应该打开前一个阶段和关闭电流,但第二个按钮也应该打开普雷沃阶段,关闭电流,也打开一个特定的标签在我的标签视图和做一些其他逻辑例如。获取实际localDate: 我
我正在做一个项目,处理多个fxml和相应的控制器文件。我需要以某种方式从b.fxml的控制器访问定义在例如a.fxml中的fxml元素并使用它。 我不允许展示实际代码。但是,为此目的,我构建了一个简单的应用程序,其中包含两个FXML及其相应的控制器。 此应用程序具有带有ButtonController.java的Button.fxml和带有ProgressIndicator.fxml的Progre
目标是打印标签的当前文本。标签在整个程序中不断变化,使用当前的方法,我只能检索标签的初始化值。 我用来检索控制器实例的内容:
我是JavaFX的新手。我试图编程一个简单的图形用户界面,但我面临着那些可能相关的问题。我用文件选择器设置文件,并想做相当基本的操作: 保存最后使用的文件夹 在VBox中写入选中文件的名称 这是我的代码(编译): 我无法刷新节点以设置当前初始目录或在VBox上显示collecName。我试图通过重新加载对象或调整窗口大小来重新生成它们,但没有任何效果。当我在控制台上打印变量时,我看到它们发生了变化