在javagui中使用Python

在javagui中使用Python,java,python,swing,user-interface,Java,Python,Swing,User Interface,我在JavaSwing中制作了一个GUI,但是我为该GUI的功能制作了许多python脚本,我是否可以使用python脚本在JavaSwing GUI界面中显示内容?谢谢 看看Jython() 它是Java中的python实现 理论上,您不应该更改python代码(如果它“质量良好”),但在实践中,我建议您必须在这里和那里进行一些更改。我个人并不使用Jython,但是所有不同的python实现通常都或多或少兼容,但并不完全相同。您将无法使用依赖于C ABI的python库,但纯python脚本应

我在JavaSwing中制作了一个GUI,但是我为该GUI的功能制作了许多python脚本,我是否可以使用python脚本在JavaSwing GUI界面中显示内容?谢谢

看看Jython()

它是Java中的python实现


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

您可能不希望在应用程序的最终版本中使用此方法,但为了快速而肮脏的方法,您可以在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
    }
}

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

我需要转换所有脚本吗?@user1510602这是Java中的python实现。我找到了一个更好的解决方案,JYMatise,一个swing GUI构建器,但可以用python编写支持代码,