Java Swing で GUI を作成しましたが、その GUI の機能用に多くの Python スクリプトを作成しました。Python スクリプトを使用して Java Swing GUI インターフェイスにコンテンツを表示することはできますか? ありがとう!
2 に答える
Jython をチェックしてください ( http://www.jython.org/ )
Java での Python 実装です。
理論的には、Python コードを変更する必要はありません (「品質が良い」場合) が、実際には、あちこちで変更を加える必要があることをお勧めします。私は個人的に Jython を使用していませんが、さまざまな Python 実装は通常、多かれ少なかれ互換性がありますが、同一ではありません。C ABI に依存する Python ライブラリは使用できませんが、純粋な Python スクリプトは機能するはずです。
アプリの最終バージョンではおそらくこれを行いたくないでしょうが、迅速で汚いアプローチとして、Java で外部プログラムを実行し、出力をキャプチャすることができます。(これは以前、Python から Java にプログラムを移植する過程にあり、Java バックエンドが完成する前に CPython モジュールの置き換えを気にせずに Java フロントエンドが機能しているかどうかを確認したかったときに使用したことがあります。) このサンプル プログラム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
}
}
これは非常に不安定なので、一時的なテスト目的でのみ使用します。しかし、そのような場合には、それは本当に役に立ちます。