前言:我一般对JavaFX和编程都是新手,所以请您在答复时尽可能提供一个答案。

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

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

对于A,我将使用按钮来启动程序,但是我想我可以弄清楚如何将方法与按钮联系起来。我基本上是在寻找我可以了解的所有Java类,这些类将处理启动exe的工作。

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

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

提前致谢。

最佳答案

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

我将在此发布,以供将来可能遇到类似问题的任何人使用。

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

编码:

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


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

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

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

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


瞧,这解决了这个问题。

09-16 05:16