亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動關閉 Java FX 應用程序可能處于窗口睡眠模式

自動關閉 Java FX 應用程序可能處于窗口睡眠模式

www說 2023-07-19 14:56:26
我是 Java FX 新手。如果用戶在一段時間內不活動,我希望關閉我的 JavaFX 應用程序。換句話說,如果一段時間內沒有任何鼠標事件或按鍵事件,應用程序會自動關閉,這可能是窗口的睡眠模式由于 innactivity ,我確實嘗試了自動關閉 JavaFX 應用程序中的代碼。但是我的程序不起作用我從https://www.callicoder.com/javafx-fxml-form-gui-tutorial/得到一個示例。我編輯了 RegistrationFormApplication 類public class RegistrationFormApplication extends Application {?private Timeline timer;?Parent root ;@Overridepublic void start(Stage primaryStage) throws Exception{? ? ?timer = new Timeline(new KeyFrame(Duration.seconds(3600), new EventHandler<ActionEvent>() {? ? ? ? @Override? ? ? ? public void handle(ActionEvent event) {? ? ? ? ? ? // TODO Auto-generated method stub? ? ? ? ? ? root = null;? ? ? ? ? ? try {? ? ? ? ? ? ? ? root = FXMLLoader.load(getClass().getResource("/example/registration_form.fxml"));? ? ? ? ? ? } catch (IOException e) {? ? ? ? ? ? ? ? // TODO Auto-generated catch block? ? ? ? ? ? ? ? e.printStackTrace();? ? ? ? ? ? }? ? ? ? ? ? ? ? primaryStage.setTitle("Registration Form FXML Application");? ? ? ? ? ? ? ? primaryStage.setScene(new Scene(root, 800, 500));? ? ? ? ? ? ? ? primaryStage.show();? ? ? ??? ? ? ? }? ? ?}));? ? ?timer.setCycleCount(Timeline.INDEFINITE);? ? ?timer.play();? ? ?root.addEventFilter(MouseEvent.ANY, new EventHandler<Event>() {? ? ? ? ?@Override? ? ? ? ?public void handle(Event event) {? ? ? ? ? ? ?timer.playFromStart();? ? ? ? ?}? ? ?});感謝幫助
查看完整描述

1 回答

?
FFIVE

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();

? ? ? ? }

? ? }


查看完整回答
反對 回復 2023-07-19
  • 1 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號