2012-04-09 57 views
2

我有一個Java程序,我想從Jython程序調用。我希望能夠擁有這兩個接口,並希望從Jython中以action listener作爲參數調用Java程序,但到目前爲止,我沒有運氣。我可以將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集成到一個應用程序中,或者這不是一件好事?

回答

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

我在一個Java項目Eclipse的Java代碼,並在Eclipse的PyDev項目的Python代碼,然後我跑了Python腳本和它的工作就像一個魅力。

+0

感謝您的幫助。拼寫錯誤是一個問題,並且在我的IDE(JHepWork)中,打印語句在此上下文中無法正確工作。它現在確實有效。再次感謝。 – 2012-04-11 00:03:28

相關問題