我有一个Java程序,我想从Jython程序中调用它。我希望能够有两个接口,并希望从动作监听器作为参数从Jython调用Java程序,但到目前为止我没有运气。
Jython代码:
import sys
sys.path.append("sgJython.jar")
from java.awt.event import ActionListener
from java.awt.event import ActionEvent
from sg.gui import MainGui
class MyListener(ActionListener):
def ActionPerformed(e):
print("gotit")
ml = MyListener()
MainGui(ml)
Java代码:
package sg;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
class MainGui
{
public MainGui(ActionListener listener)
{
top = new JFrame();
top.setBounds(300, 300, 600, 300);
JButton doneButton = new JButton("Done");
doneButton.addActionListener(listener);
top.add(doneButton)
}
}
还有其他方法吗?如果没有,是否有更好的方法将Java和Python集成到单个应用程序中,或者这不是一件好事吗?
答案 0 :(得分:1)
它已经有效,你只需修复actionPerformed
方法,该方法签名错误,并且不会声明self
参数。
class MyListener(ActionListener):
def actionPerformed(self, e):
print("gotit")
在您的Java代码中,您错过了几个分号,因为您没有显示框架,除非您从Jython代码中明确询问它,否则它将不可见。所以我为测试目的稍微改了一下:
public class MainGui {
private JFrame top;
public MainGui(ActionListener listener) {
top = new JFrame();
top.setBounds(300, 300, 600, 300);
JButton doneButton = new JButton("Done");
doneButton.addActionListener(listener);
top.add(doneButton);
top.pack();
top.setVisible(true);
}
}
我在Eclipse中的Java项目中编写了Java代码,在Eclipse中的PyDev项目中编写了Python代码,然后运行了Python脚本,它就像一个魅力。