我有一个主控制器来处理我的主控制器。fxml和处理弹出窗口的第二个控制器。fxml
从主控制器按下按钮时,弹出窗口出现。在弹出窗口中添加玩家。玩家通过textfield添加到数组中,并且必须发送回主控制器。我在弹出控制器中有一个名为“Btnaply”的按钮,当按下该按钮时,我想关闭弹出窗口并从主控制器类处理数组。我只想让我的主控制器类知道弹出窗口。
这是我从主控制器创建弹出窗口的方式:
button.setOnAction(e -> newWindow());
public void newWindow(){
try{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("popup.fxml"));
Parent popupRoot = fxmlLoader.load();
Stage playerStage = new Stage();
playerStage.setTitle("Player");
playerStage.setScene(new Scene(popupRoot, 720, 600));
playerStage.show();
}catch(Exception e) {
e.printStackTrace();
}
}
现在的问题是如何获取事件或对象。当我在没有使用FXML的情况下创建弹出窗口(手动创建GUI)时,这很容易,因为我只创建了类popup的一个对象,并且有一个getButton()
和getArray()
。在我的主控制器类中,我有一个Popup-Popup=newpopup()
然后我有了一个方法,可以从我的弹出类
弹出中处理按钮。getButton()。设定动作(e)-
但这是不可能使用fxml。我似乎无法得到正在运行的对象。如果我要创建一个
Popup popup
,我只会得到一个新事件,而不是正在运行的事件。
执行此操作的方法与前面的方法最为相似,将getButton()
方法添加到控制器类,并从fxmloader
获取控制器类:
Parent popupRoot = fxmlLoader.load();
MyController controller = fxmlLoader.<MyController>getController();
controller.getButton()...
然而,我建议使用不同的方法来传递数据,因为这种方法将您自己限制在弹出窗口中的一个按钮,作为提交玩家的唯一方法。我宁愿通过“通知”创建弹出窗口的类来实现这一点,即:
在调用类中实现此接口
public interface PlayerContainer {
void addPlayers(Player[] players);
}
并将其添加到控制器中:
private PlayerContainer playerContainer;
public void setPlayerContainer(PlayerContainer playerContainer) {
this.playerContainer = playerContainer;
}
并在加载弹出内容后直接将调用类传递给控制器:
Parent popupRoot = fxmlLoader.load();
MyController controller = fxmlLoader.<MyController>getController();
controller.setPlayerContainer(this);
当用户提交播放器数据时,只需调用
this.playerContainer.addPlayers(playerData);
除了关上窗户。传递可观察列表
看看jewelsea对“传递参数JavaFXML”的回答。这列出了将对象传递给fxml控制器的一些替代方法。在FXMLLoader方法上设置控制器可能很容易实现,例如,如果使用调用类的内部类作为控制器类。这样,与上面描述的方法相比,重用弹出窗口更难。。。
这让我的头撞到了墙上!!!!希望有人能给我指出正确的方向。我确信我在做一些完全愚蠢的事情。我找了又找,但似乎找不出为什么这不管用!!(在IntelliJ IDE 15.x上使用JDK8.x和Scenebuilder)。我试图在GUI上显示数据,但希望access通过编程将这些数据从其他类/方法发送给它。。。。下面是一个简单的概念,我在着手更大的项目之前,正试图让它发挥作用: 我的简单GUI在FXM
我正在学习使用SceneBuilder创建一个新的JavaFX应用程序的教程,并尝试向.fxml文件添加一个controller类。 我正在使用Eclipse和Gluon的Scene Builder V8.1.1版本。 在哪里可以将我的.fxml文件连接到我的控制器Java类?
我为用户注册创建了简单的Thymeleaf表单模板。当我点击SubmitForm按钮时,POST请求被发送(正如我在浏览器日志中看到的),但它从未由saveRegistration控制器方法处理,并用(method=RequestMethod.POST)注释 Spring版本4.2.2,Spring Security4.0.2,Spring Boot启动器1.2.7模型对象使用Hibernate验
英文原文:http://emberjs.com/guides/controllers/dependencies-between-controllers/ 有时候,特别是在嵌套资源时,可能需要为两个控制器建立某种联系。以下面的路由为例: 1 2 3 4 5 App.Router.map(function() { this.resource("post", { path: "/posts/:po
问题内容: 我试图在JavaFX中获得TableView来动态显示内容。 当我运行程序时,出现此错误: 我的控制器名为“ UserInterfaceController.java”,它与FXML文件位于同一软件包下,我也已将该软件包导入了FXML中。为什么找不到控制器? FXML文件: 控制器: 主类: 问题答案: 使用FXML的全限定名来引用您的控制器: 后续问题的答案 对以下问题的回答解释了为
我试图在JavaFX中获得一个TableView来动态显示内容。 当我运行程序时,出现以下错误: 我的控制器名为“UserInterfaceController.java”,它与FXML文件在同一个包下,我也在FXML中导入了包。为什么找不到控制器? FXML文件: 控制器: 主要类: