2

我在 java swing 中制作了一个 GUI,但是我为该 GUI 的功能制作了许多 python 脚本,无论如何我可以使用我的 python 脚本在 Java Swing GUI 界面中显示内容吗?谢谢!

4

2 回答 2

3

查看 Jython ( http://www.jython.org/ )

这是Java中的python实现。

理论上你不应该改变你的python代码(如果它“质量好”),但实际上我建议你必须在这里和那里做一些改变。我个人不使用 Jython,但所有各种 python 实现通常或多或少兼容,但并不完全相同。您将无法使用依赖于 C ABI 的 python 库,但纯 python 脚本应该可以工作。

于 2012-07-16T15:48:39.490 回答
0

您可能不想为您的应用程序的最终版本执行此操作,但为了快速而肮脏的方法,您可以在 java 中运行外部程序并捕获输出。(我之前在将程序从 python 移植到 java 的过程中使用过这个,想在 java 后端完成之前查看 java 前端是否工作,而不用担心替换 CPython 模块。)这个示例程序运行 python 程序test.py并打印输出:

import java.io.*;

class Jexec{
    public void Jexec(){}

    private String exec(String execStr){
    try{
        // run process and capture stdout
        Process p = Runtime.getRuntime().exec(execStr);
        InputStream s = p.getInputStream();

        // convert stdout to a string
        BufferedReader br = new BufferedReader(new InputStreamReader(s));  
        StringBuffer sb = new StringBuffer(); 
        String line;  
        while ((line = br.readLine()) != null) {  
        sb.append(line).append("\n");  
        }  
        String output = sb.toString();  

        p.destroy();
        return output.toString();

    }catch(Exception e){
        //actually handle the error here
        e.printStackTrace();
        return String.format("*** Running \"%s\" failed. ***",execStr);
    }
    }

    public static void main(String[] args){
    Jexec je = new Jexec();
    System.out.println(je.exec("python test.py")); //in your case, you would use the output instead of just printing it
    }
}

这是超级不完整的,所以,再次,我只会将它用于临时测试目的。但对于这些情况,它确实很有帮助。

于 2012-07-16T17:15:51.340 回答