javafx:如何关闭未知的子阶段/窗口

时间:2018-04-18 18:28:56

标签: javafx java-8 stage xuggle

我使用此代码使用xuggler转换视频: http://www.jochenhebbrecht.be/site/2010-10-12/java/converting-resizing-videos-in-java-xuggler

转换工作正常并且行:

reader.addListener(ToolFactory.makeViewer(true));

让我查看两个带视频和统计信息的窗口。问题是,转换后窗口不会自动关闭,我不知道该怎么做。

我将上面的一行改为

IMediaListener imL=ToolFactory.makeViewer(IMediaViewer.Mode.FAST_VIDEO_ONLY,true);
reader.addListener(imL);

然后我插入

reader.removeListener(imL);
            reader.close();

但转换/任务完成后窗口不会消失。所以我想知道如何访问这个窗口来实现一个简单的stage.close()。

编辑:我正在使用Java 8

EDIT2: 我现在试过

StageHelper.getStages().size(); //-> 1

Iterator<Window> windows=Window.impl_getWindows();
String window_String="";
while(windows.hasNext()){
    window_String+=" |-> "+
}  
System.out.println("WINDOWS: ---->"+Window.impl_getWindows());

两者都表明只有一个窗口。看来,窗户来自 “ reader.addListener(ToolFactory.makeViewer(true)); ”不在列表中。

1 个答案:

答案 0 :(得分:1)

问题是Xuggler使用Swing而不是JavaFX,因此Window.impl_getWindows()StageHelper.getStages()不会返回使用ToolFactory.makeViewer(true)创建的窗口。

所以正确的方法是java.awt.Window.getWindows()