繁体   English   中英

关闭嵌套的模态窗口,而没有“模糊”的声音

[英]Closing a nested modal window, without the “blurp” sound

我有3个窗户...

  1. main :主要应用程序

  2. mod-win1 :从main打开的模式窗口,用于编辑/创建某些对象,

  3. mod-win2 :从mod-win1打开的模式窗口,作为自定义文件选择器。

在单击mod-win1的按钮上创建/打开mod-win2 ,这是在此窗口的布局控制器中进行的。 mod-win1将自身的引用传递给mod-win2mod-win2在需要时(在取消/选择时)使用它来调用close方法。

问题是,每当关闭窗口时,它都会发出“嗡嗡”的声音-我知道,这很琐碎,但它使我感到烦恼! 如果您尝试单击模态窗口,则它与锁定窗口后的锁定窗口发出的声音相同,因此,我想这是因为我要回到锁定窗口的布局控制器以关闭当前窗口。 我所有其他模态窗口均以无提示方式关闭,它们不是在另一个窗口的布局控制器中创建的!

谁能确认这是否会引起这种噪音?

另外,是否有一种方法可以使窗口自行关闭(从其布局控制器内部),因此我不必访问调用对象? ...或者我应该创建一个全新的对象来封装所有文件选择器功能,然后调用该对象(而不是mod-win1布局控制器)来关闭窗口?

舞台可以随时通过调用其close方法关闭。 我无法使用JDK1.8.0_92在Windows 10计算机上重现您的模糊声音。 但是请查看以下示例:

package com.isp.stackoverflow;/**
 * Created by okr on 13.07.2016.
 */

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class ModalWindowsClosing extends Application
{

  public static void main( String[] args )
  {
    launch( args );
  }

  @Override
  public void start( Stage primaryStage )
  {
    final Button btn = new Button( "click me!" );
    btn.setOnAction( __ ->
    {
      final Stage dialog = new Stage();
      final Button dialogBtn = new Button( "click me again, fool!" );
      dialogBtn.setOnAction( ___ ->
      {
        final Button closeBtn = new Button( "close dialog" );
        closeBtn.setOnAction( ____ -> dialog.close() );
        final Stage innerDialog = new Stage();
        innerDialog.initOwner( dialog );
        innerDialog.initModality( Modality.APPLICATION_MODAL );
        innerDialog.setScene( new Scene( new StackPane( closeBtn ) ) );
        innerDialog.show();
      } );
      dialog.initOwner( primaryStage );
      dialog.initModality( Modality.APPLICATION_MODAL );
      dialog.setScene( new Scene( new StackPane( dialogBtn ) ) );
      dialog.show();
    } );
    primaryStage.setScene( new Scene( new StackPane( btn ) ) );
    primaryStage.show();
  }
}

我的猜测是,您没有正确设置窗口所有者,但是如果没有示例代码,这是很难告诉的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM