【问题标题】:javafx: how to close unknown child stages/windowsjavafx:如何关闭未知的子阶段/窗口
【发布时间】:2018-09-29 02:31:58
【问题描述】:

我使用此代码通过 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));”不在列表中。

【问题讨论】:

  • 不幸的是,我仍在使用 Java 8,我无法为这个项目进行更改。
  • ToolFactory 的班级来自 Xuggler?但似乎 Xuggler 使用的是 Swing 而不是 JavaFX,所以获取 windows 的正确方法是java.awt.Window.getWindows()
  • 谢谢你成功了!

标签: javafx java-8 stage xuggle


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2011-06-21
    • 2014-04-21
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多