我正在使用Eclipse和PyDev插件在Jython中实现GUI应用程序。 问题是我很难使用内置调试器。当我开始调试会话时,它就会停止。当然这应该是预期的,因为程序只是创建一个JFrame,然后它就完成了。
所以我为不同的事件提出了任何断点。按下按钮,永远不会发生,因为调试会话已经终止。
我该怎么办?我越来越厌倦了使用打印机进行所有调试。
例如,当我尝试调试这个小Java示例时。我没有遇到任何问题 我在windowClosing-method
中设置的断点import java.awt.event.*;
import javax.swing.*;
public class Test1 {
public static void main(String s[]) {
JFrame frame = new JFrame("JFrame Source Demo");
// Add a window listner for close button
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setVisible(true);
}
}
然后我在jython中尝试了这个或多或少类似的例子
from javax.swing import JFrame;
import java.awt.event.WindowListener as WindowListener
class Test1 (JFrame, WindowListener):
def __init__(self):
super(JFrame, self).__init__('Some name goes here', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size = (800, 800))
self.addWindowListener(self)
self.setVisible(True)
def windowClosing(self, windowEvent):
print 'window closing'
pass # want to hit this breakpoint
someFrame = Test1()
pass #breakpoint here maybe
如果我试图在调试器中运行jython示例,它就会终止。好吧,我在windowClosing方法中创建someFrame和断点后添加了一个断点。仍然没有运气,当我关闭窗口时它没有被击中,但我看到它在我看到打印输出时执行。
谁能告诉我我做错了什么?我确定我忘记了一些非常简单的事情。
答案 0 :(得分:2)
在主方法的第一行中放置一个断点,用于启动应用程序。
如果要调试某些操作(如按下按钮),请在按钮中添加动作侦听器,并在处理方法内添加断点。例如:
JButton button = new JButton("OK");
button.addActionListener(new ActionListener()
{
@Override
public void action(ActionEvent e)
{
System.out.println("button OK has been pressed"; // add breakpoint here
// call to some code that handles the event
}
});
答案 1 :(得分:1)
我遇到了同样的问题
btnCompilar = new JButton("Compilar");
btnCompilar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
compile(); //can't hit breakpoint here
}
});
我无法在actionPerformed中点击断点,所以我只创建了一个方法并在其中使用了断点。
void compile(){
//can hit breakpoint here
}