0

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

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

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

谢谢你。

4

1 回答 1

1

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

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. 
});

我同意这是一种“缠绕”的方式。
Siteye hoş geldin ve kolay gelsin。

于 2012-04-27T09:51:45.427 回答