我现在正在使用JavaFX并在Schoolproject上工作。
关于我的程序,我有一个登录屏幕,如果我按登录,我来到大型机。大型机的内容区域为空,因为当我使用菜单栏中的按钮时,我会加载构建大型机的AnchorPane的内容。
当我按下登录按钮时,我想在其中放置主机和主窗格。但我不知道如何将窗格从另一个类加载到大型机中。
这是我的代码:
加载大型机的代码:
In [19]: np.einsum('i,j->ij',[1,2,3],[1])
Out[19]:
array([[1],
[2],
[3]])
In [30]: %%timeit x=np.arange(1000)
...: y=x[:,None]
1000000 loops, best of 3: 439 ns per loop
In [31]: %%timeit x=np.arange(1000)
...: np.einsum('i,j->ij',x,[1])
100000 loops, best of 3: 15.3 µs per loop
将主窗格放入大型机的代码:
@FXML
protected void login(ActionEvent event) throws IOException, URISyntaxException {
Stage stage;
Parent root = null;
stage = (Stage) btnLogin.getScene().getWindow();
try{
root = FXMLLoader.load(getClass().getResource("view/mainframe.fxml"));
} catch (IOException e){
e.printStackTrace();
}
Scene scene = new Scene(root, 1280, 900);
stage.setScene(scene);
stage.show();
}
这两种方法属于不同的类别。
如果您需要更多信息,请告诉我们:)
谢谢你,问候,蒂莫
答案 0 :(得分:0)
只需调用mHome()
方法即可。请注意,由于您从不使用ActionEvent
,因此您可以从方法签名中省略它(FXMLLoader
仍然可以将其映射为事件处理程序)。所以把它改成
@FXML
protected void mHome() throws IOException, URISyntaxException {
try {
URL url = getClass().getResource("view/home.fxml");
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(url);
fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
AnchorPane page = (AnchorPane) fxmlLoader.load(url.openStream());
aContent.getChildren().clear();
aContent.getChildren().add(page);
}
catch (IOException e) {
e.printStackTrace();
}
}
如果总是想要在首次显示主窗格时显示“主窗格”,只需将mHome
的号召添加到initialize()
方法中控制器类:
public void initialize() {
// existing code...
mHome();
}
或者,如果您只想在登录窗格中加载“主窗格”时显示“主窗格”,请在登录处理程序中添加对mHome
的调用:
@FXML
protected void login(ActionEvent event) throws IOException, URISyntaxException {
Stage stage;
Parent root = null;
stage = (Stage) btnLogin.getScene().getWindow();
try{
FXMLLoader loader = new FXMLLoader(getClass().getResource("view/mainframe.fxml"));
root = loader.load();
MainController controller = loader.getController();
controller.mHome();
} catch (Exception e){
e.printStackTrace();
}
Scene scene = new Scene(root, 1280, 900);
stage.setScene(scene);
stage.show();
}
(我假设MainController
是mainframe.fxml
的控制器类的名称;显然只需根据需要进行调整。)