如何在JavaFX中打开新窗口时运行默认代码(初始化)

如何在JavaFX中打开新窗口时运行默认代码(初始化),javafx,fxml,Javafx,Fxml,我想要一种在JavaFX中从主控制器打开新窗口时运行一些代码的方法 以下是我的主控制器: public class FXMLDocumentController implements Initializable { //consider all variables and or elements initialized final Stage newWindow = new Stage(); @FXML private void searchButtonAction(ActionEvent e

我想要一种在JavaFX中从主控制器打开新窗口时运行一些代码的方法

以下是我的主控制器:

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());
    }`
}`}`
基本上新窗口会打开,但我想在加载时运行一些代码。我已经浏览了一些地方,并注意到我可以创建一个start方法,该方法应该在新窗口启动时运行。但我无法让它在我的代码中运行。另外,我看到的另一种方法是放置事件处理程序

我的问题是,如果我要实现上述方法,那么我应该将这些方法/事件处理程序放在哪里呢。另一种方法也会有所帮助。请举一些例子

编辑:我希望输出显示在新窗口上,它基本上是从主窗口获取的一些文本,并显示在新窗口中。(目前我的工作方式是在新窗口中创建一个新按钮,然后在按钮上放置一个onClickAction事件以运行searchButtonAction()。我希望默认情况下运行searchButtonAction()。如何初始化它,以便在打开新窗口时调用searchButtonAction()


提前谢谢你。

我有这个问题。我在fxml文件中指定了错误的控制器。当我为fxml文件指定了正确的控制器时,它工作了

我有这个问题。我在fxml文件中指定了错误的控制器。当我为fxml文件指定了正确的控制器时,它工作了

你的问题不是很清楚。你为什么不把你想运行的代码放在
searchButtonAction
方法中,在
newWindow.show()之前(或之后)?我希望输出显示在新窗口上,它基本上是从主窗口获取输入并在新窗口中显示的一些文本。(目前我的工作方式是在新窗口中创建一个新按钮,然后在按钮上执行一个操作来运行我的代码)。我希望我的代码默认运行。现在还不清楚问题出在哪里。您的
searchButtonAction
将被调用以打开新窗口。只要在那里执行代码,就可以对新窗口执行任何需要的操作。这正是问题所在,不是我不能在新窗口中运行我的代码,而是当我默认打开新窗口时,我想要运行一些代码。因此,如果不采取任何行动,我的代码就会执行。你的问题不是很清楚。你为什么不把你想运行的代码放在
searchButtonAction
方法中,在
newWindow.show()之前(或之后)?我希望输出显示在新窗口上,它基本上是从主窗口获取输入并在新窗口中显示的一些文本。(目前我的工作方式是在新窗口中创建一个新按钮,然后在按钮上执行一个操作来运行我的代码)。我希望我的代码默认运行。现在还不清楚问题出在哪里。您的
searchButtonAction
将被调用以打开新窗口。只要在那里执行代码,就可以对新窗口执行任何需要的操作。这正是问题所在,不是我不能在新窗口中运行我的代码,而是当我默认打开新窗口时,我想要运行一些代码。因此,如果不采取任何行动,我的代码就会执行。
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 ??? 
}