1 回答

TA貢獻1797條經驗 獲得超6個贊
獲取RxJavaFx并運行代碼。4 秒不活動(沒有任何事件)后,它將關閉應用程序。
? ?import java.util.concurrent.TimeUnit;
? ? import io.reactivex.Observable;
? ? import io.reactivex.schedulers.Schedulers;
? ? import io.reactivex.subjects.PublishSubject;
? ? import javafx.application.Application;
? ? import javafx.application.Platform;
? ? import javafx.scene.Scene;
? ? import javafx.scene.control.TextField;
? ? import javafx.scene.input.InputEvent;
? ? import javafx.stage.Stage;
? ? import javafx.stage.WindowEvent;
? ? public class CloseAfterApp extends Application {
? ? ? ? public static void main(String[] args) {
? ? ? ? ? ? launch(args);
? ? ? ? }
? ? ? ? @Override
? ? ? ? public void start(Stage stage) throws Exception {
? ? ? ? ? ? Scene scene = new Scene(new TextField());
? ? ? ? ? ? PublishSubject<InputEvent> sceneEventPublishable = PublishSubject.create();
? ? ? ? ? ? PublishSubject<WindowEvent> windowEventPublishable = PublishSubject.create();
? ? ? ? ? ? scene.addEventFilter(InputEvent.ANY, sceneEventPublishable::onNext);
? ? ? ? ? ? stage.addEventFilter(WindowEvent.ANY, windowEventPublishable::onNext);
? ? ? ? ? ? Observable.merge(sceneEventPublishable, windowEventPublishable)
? ? ? ? ? ? .switchMap(event -> Observable.just(event).delay(4, TimeUnit.SECONDS, Schedulers.single()))
? ? ? ? ? ? .subscribe(event -> Platform.exit());
? ? ? ? ? ? stage.setScene(scene);
? ? ? ? ? ? stage.show();
? ? ? ? }
? ? }
添加回答
舉報