首页 文章

创建JavaFX对话框

提问于
浏览
0

我正在编写一个javafx程序,我需要创建并使用我自己的基于Stage(Javafx.Stage)的对话框来显示消息和确认 . 我已经写了所有必要的代码,但我有一个问题:

对话框必须停止执行其余代码,直到给出响应为“是”或“否”或“重试” . 当我使用像“DialogBox.ShowMessage”这样的对话框时,会出现一个带有消息和按钮的舞台 . 但是,正如您所想,其余代码将继续执行 . 我怎么能绕过这个?当我创建阶段时,它必须停止其他线程或它所依赖的线程 . 我通过互联网和这里搜索,但我找不到确切的解决方案 . 一个想法是使用“javafx.event.EventDispatcher”或“javafx.event.EventDispatchChain”,但我无法弄清楚如何使用它们 . 另一个想法是使用“java.awt.EventQueue” . 这里有一些可以帮助的东西:我可以控制舞台表演和隐藏事件以及显示或隐藏事件处理程序 . 我认为som类型的线程队列可以在其中一个特定部分中使用 .

我希望我能够澄清情况 . 简而言之,我需要在使用我自己的代码使用另一个阶段时管理线程 .

谢谢 .

1 回答

  • 1

    关于执行暂停,它有一个Jira问题http://javafx-jira.kenai.com/browse/RT-19783 .
    作为一种解决方法,我不知道如何使用EventDispatcher和EventDispatchChain来克服这个问题,但你可以发送 EventHandler 作为参数 . 例如,

    public static void ShowMessage(final EventHandler<ActionEvent> okAction, final EventHandler<ActionEvent> cancelAction){
    
       // Define and add buttons to the "view" and show message
    
       btnOk.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
            okAction.handle(null);
            }
        });
    
       btnCancel.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
            cancelAction.handle(null);
            }
        });
    }
    

    并用它,

    DialogBox.ShowMessage(
     new EventHandler<ActionEvent>() {
          @Override public void handle(ActionEvent arg0) {
            // Do stuff when "ok" clicked. 
    },
     new EventHandler<ActionEvent>() {
          @Override public void handle(ActionEvent arg0) {
            // Do stuff when "cancel" clicked. 
    });
    

    我同意这是一种"winding"方式 .
    Siteyehoşgeldinve kolay gelsin .

相关问题