在我的应用程序中,我有一些不同功能所需的组件
现在,每当我打开一个需要其中一个组件的功能时,所有组件都从头开始构建
这是不必要的,所以我想改变这一点,但我不知道如何。
我不再需要的组件应该隐藏在后面,当它们再次需要时,它们应该放在前面。
这应该会提高性能,因为不需要重建组件(或者至少我希望如此)。
我希望有人知道如何解决这个问题。
答案 0 :(得分:2)
听起来你需要的就是懒得实例化你需要的每件作品,并保留对它的引用。问题非常笼统,所以很难给出一个具体的例子,但基本思想看起来像这样:
public class SceneController {
private Parent view1 ;
private Parent view2 ;
// etc... You could perhaps store these in a map, or other data structure if needed
public Parent getView1() {
if (view1 == null) {
view1 = createView1();
}
return view1 ;
}
public Parent getView2() {
if (view2 == null) {
view2 = createView2();
}
return view2 ;
}
private Parent createView1() {
// Build first view. (Could be done by loading FXML, etc.)
}
private Parent createView2() {
// Build second view...
}
}
然后你可以按照
的方式做事public class MyApp extends Application {
@Override
public void start(Stage primaryStage) {
SceneController sceneController = new SceneController();
BorderPane root = new BorderPane();
Button showView1 = new Button("View 1");
Button showView2 = new Button("View 2");
ButtonBar buttonBar = new ButtonBar();
buttonBar.getButtons().addAll(showView1, showView2);
root.setTop(buttonBar);
showView1.setOnAction(e -> root.setCenter(sceneController.getView1()));
showView2.setOnAction(e -> root.setCenter(sceneController.getView2()));
Scene scene = new Scene(root, 600, 600);
primaryStage.setScene(scene);
primaryStage.show();
}
}