【发布时间】:2009-12-23 15:46:23
【问题描述】:
在简化版本中,我拥有的是:
public class MyLabel extends JLabel implements MouseListener{
private SomeControl control;
public MyLabel(SomeControl control){
this.addMouseListener(this);
this.control = control;
}
@Override
public void mouseClicked(MouseEvent arg0) {
Object x = this.control.getSomeProperty();
}
即使我在构造 MyLabel 实例时调试并验证控件及其 someProperty 不为空,但当触发事件并且处理程序介入时,它显示 someProperty 就好像它为空一样,这可能是什么问题?
【问题讨论】:
-
嗯,对象和属性不只是随机变为空。所以在你的代码的某个地方你有一个错误。我们无法帮助解决问题。如下所示,您需要逐步执行代码来解决问题。这是解决问题的 101。学习如何使用调试器,或学习如何在整个代码中添加 System.out.println(...) 语句。
-
只是好奇,你为什么把“this”放在方法调用的前面?
-
无特殊原因,更容易看懂代码
-
我没有注意到 addMouseListener(this);之前 - 在这种情况下它可能没问题......但一般来说,你不应该在构造函数之外传递“this”,因为它还不是真正有效的(你没有完整的构造函数对象)。