直接切换 Stage 会造成大量资源消耗,所以采用Scene切换来减少资源消耗。
启动类(继承Application)
public class Second extends Application {
@Override
public void start(Stage primaryStage)throws Exception{
primaryStage.setTitle("Sence change");
Group root = new Group();
Scene scene = new Scene(root, 400, 200, Color.WHITE);
// second scene
Group second = new Group();
Scene secondScene = new Scene(second, 200, 200,Color.BLACK);
EventHandler<Event> eventHandler = new EventHandler<Event>() {
@Override
public void handle(Event event) {
EventType<? extends Event> type = event.getEventType();
String name = type.getName();
// KeyEvent.KEY_PRESSED
switch (name) {
case "MOUSE_CLICKED":
// 按键后触发播放动画效果,播放后完全不影响应用工作线程,说明完全可行
// 可以在事件中处理逻辑计算
break;
case "KEY_PRESSED":
// 任意键盘按键触发场景切换,切换到第二个场景
primaryStage.setScene(secondScene);
break;
}
event.consume();
}
};
scene.addEventHandler(Event.ANY, eventHandler);// 绑定事件
primaryStage.setScene(scene);
primaryStage.show();
}
}
创建多个scene, 在同一个stage中进行切换。 可以减少资源消耗。
scene必须在主线程中创建和管理,否则会报错。