2

我有一个 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 集成到单个应用程序中,或者这不是一件好事?

4

1 回答 1

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 脚本,它就像一个魅力一样工作。

于 2012-04-09T22:27:23.037 回答