从JavaFX中启动单独的exe

从JavaFX中启动单独的exe,java,javafx-8,javafx-2,exe,media,Java,Javafx 8,Javafx 2,Exe,Media,前言:我对JavaFX和编程非常陌生,因此我恳请您在回答时提供尽可能详细的答案 话虽如此,我正在创建一个JavaFX程序,其中用户选择许多媒体文件(使用FileChooser),这些文件存储在ListView中,然后用户可以选择使用不同的程序(即媒体播放器)启动这些文件 所以,我要找的是两件事: A) 如何从JavaFX中启动程序(如VLC)。 B) 如何发送该程序要加载到其播放列表中的文件列表 例如,我将使用一个按钮来启动程序,但我想我可以找到如何将该方法与按钮绑定在一起。我基本上是在寻找我可

前言:我对JavaFX和编程非常陌生,因此我恳请您在回答时提供尽可能详细的答案

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

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

例如,我将使用一个按钮来启动程序,但我想我可以找到如何将该方法与按钮绑定在一起。我基本上是在寻找我可以了解的任何Java类,它们将处理启动exe的工作

对于B,我知道响应可能因程序而异(VLC一个进程,WMP另一个进程),如果是这样的话,一个抽象的实现建议,或者如何具体地将播放列表加载到VLC本身应该是非常有帮助的

我没有包括任何源代码,因为我无法在网上找到任何答案,也没有这两个过程的任何东西,但如果需要,请让我知道


提前感谢。

因此,在我意识到使用“Java”而不是“JavaFX”显式搜索问题可能会更幸运之后,我找到了一个解决方案

我在这里为将来可能遇到类似问题的任何人发帖

可用于加载外部exe/软件/进程的Java类是ProcessBuilder类。你可以阅读更多关于那个班的内容

守则:

        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("\\]", "\"");
瞧,这解决了这个问题