从JavaFX内部启动单独的exe

时间:2018-08-08 19:36:51

标签: java javafx-8 javafx-2 exe media

序言:我对JavaFX和编程领域还是很陌生,所以请您在回答时尽可能提供一个答案。

话虽如此,我正在创建一个JavaFX程序,其中用户选择多个媒体文件(使用FileChooser),这些文件存储在ListView中,然后用户可以选择使用其他程序启动这些文件。 (即媒体播放器)。

所以,我要寻找的是两件事: A)如何在JavaFX中启动程序(例如VLC)。 B)您如何发送文件列表以供该程序在其播放列表中加载?

对于A,我将使用按钮来启动程序,但是我想我可以弄清楚如何将方法与按钮绑定在一起。我基本上是在寻找我能学到的任何Java类,这些类都可以处理启动exe的工作。

对于B来说,我知道响应会因程序而异(VLC一个进程,WMP另一个进程),并且如果是这种情况,则应该采用抽象实现建议或如何将播放列表专门加载到VLC本身很有帮助!

我没有提供任何源代码,因为我无法在线找到任何答案,而且这两个过程完全没有WRT,但是如果需要,请告诉我。

谢谢。

1 个答案:

答案 0 :(得分:0)

因此,当我意识到我可以用“ Java”而不是“ JavaFX”明确地搜索问题后,找到了一个解决方案。

我在这里发布信息,以供将来可能遇到类似问题的人使用。

可用于加载外部exe /软件/进程的Java类是ProcessBuilder类。您可以阅读有关该课程HERE的更多信息。

代码:

        Process process = new ProcessBuilder("the absolute path of the exe here", 
filesToString).start();

通常,第二个(以及更进一步的)参数是exe应该加载的文件的绝对路径。

在我的情况下,由于用户确定文件的数量,所以我不知道要加载多少文件,更不用说绝对路径的名称了,因此无法预测有多少(或要传递的参数。我解决此问题的方法是将所有用户选择的文件从ArrayList转换为字符串,并使用replaceAll在单个字符串内创建逗号分隔的文件。

下面的代码可能是不言自明的。

//this actually needs to be done before the process above
        filesToString = randomizedFiles.toString().replaceAll(", ", "\" \"").replaceAll("\\[", "\"").replaceAll("\\]", "\"");

瞧,这个问题解决了。

相关问题