我想从JavaFX中的主控制器打开NewWindow时运行一些代码。
这是我的主控制器:
public class FXMLDocumentController implements Initializable {
//consider all variables and or elements initialized
final Stage newWindow = new Stage();
@FXML
private void searchButtonAction(ActionEvent event) {
//Clicking on Search button triggers this event handler and Search Window will open with all the results
newWindow.show();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
newWindow.initModality(Modality.APPLICATION_MODAL);
//Loader to load the Search Window
FXMLLoader loader = new FXMLLoader(
getClass().getResource("SearchWindow.fxml")
);
Scene scene = new Scene(loader.load());
newWindow.setScene(scene);
SearchWindowController controller = loader.<SearchWindowController>getController();
controller.mainWindow = this;
} catch (Exception e) {
System.err.println(e.getMessage());
}`
}`}`
这是我的新窗口控制器:
public class SearchWindowController implements Initializable {
@FXML
void searchButtonAction() {
//Code i want to run when this window opens
} catch (Exception e) {
System.err.print(e);
}
}
/**
* Initializes the controller class.
*
* @param url
* @param rb
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
//empty
//call searchButtonAction() when this window opens ???
}
所以基本上新窗口打开但我想运行一些加载后的代码。我已经经历了一些地方,并注意到我可以制作一个应该在新窗口启动时运行的启动方法。但我无法让它在我的代码中运行。另外我看到的另一种方法是放置一个事件处理程序。
我的问题再次出现,如果我要实现上述方法,我应该把那些方法/事件处理程序放在哪里。我想在窗口加载时默认调用我的searchButtonAction()。一种不同的方法也会有所帮助。一些例子将不胜感激。
编辑:我希望输出显示在newWindow上,它基本上是从主窗口中获取的一些文本,并在新窗口中显示。 (目前我正在解决的问题是在新窗口中创建一个新按钮,然后在按钮上放置一个onClickAction事件来运行searchButtonAction())。我希望searchButtonAction()按默认运行。如何初始化它,以便在打开新窗口时调用searchButtonAction()。
提前谢谢。
答案 0 :(得分:0)
我遇到了这个问题。我在fxml文件中指定了错误的控制器。当我为fxml文件指定了正确的控制器时,它起作用了。