繁体   English   中英

我可以将 Jython 动作侦听器添加到 java 程序吗?

[英]Can I add a Jython action listener to a java program?

我有一个 Java 程序,我想从 Jython 程序调用它。 我希望能够将这两个接口相互连接,并希望使用动作侦听器作为参数从 Jython 调用 Java 程序,但到目前为止我还没有成功。

杰通代码:

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)
}
}

还有其他方法吗? 如果没有,是否有更好的方法 go 将 Java 和 Python 集成到一个应用程序中,或者这不是一件好事吗?

它已经工作的方式,你只需要修复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 脚本,它非常有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM