我有它具有下列方法和实例变量一个公共类:JPanel.addComponentListener不起作用
public void setImagePanel(JPanel value) {
imagePanel = value;
if (imagePanel != null) {
//method 1 : works
imagePanel.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent evt) {
System.out.println("Here 1");
}
});
//method 2 : does not work
panelResizeListener = new ResizeListener();
imagePanel.addComponentListener(panelResizeListener);
//method 3 : works
//ResizeListener listener = new ResizeListener();
//imagePanel.addComponentListener(listener);
//method 4 : works
//imagePanel.addComponentListener(new ResizeListener());
//method 5 : does not work -- THIS IS THE DESIRED CODE I WANT TO USE
imagePanel.addComponentListener(panelResizeListener);
}
}
public class ResizeListener extends ComponentAdapter {
@Override
public void componentResized(ComponentEvent evt) {
System.out.println("RESIZE 3");
}
}
private ResizeListener panelResizeListener = new ResizeListener();
private static JPanel imagePanel;
每个的上述方法对应的立即下面的代码,直到接下来//方法评论。我不明白的是为什么我不能使用类的实例变量,并添加到JPanel
作为组件监听。
以上,其中我说该方法不起作用的情况下会发生什么事是,我没有得到"RESIZE 3"
日志消息。在所有我列出它可以工作的情况下,我会收到"RESIZE 3"
消息。
外类是公众所不同的是它实现我创建(其具有在共同的任何方法或变量与上面列出的方法和变量)的接口没有其他修饰。
如果有人能帮助我,我将不胜感激。这个问题对我来说没有意义,代码应该是相同的。
你可以使用一个类变量。你的代码还有其他问题。发表您的SSCCE:http://sscce.org – camickr 2010-05-21 00:25:24
对不起,我不明白,我使用的是类变量,它在我上面贴的代码。我的代码是什么意思? 我还尝试了以下 ResizeListener听者=新ResizeListener(); panelResizeListener =监听; // HAVING此行打破它,我不明白为什么 imagePanel.addComponentListener(监听); 另外一个方面的问题,我不知道如何格式化我的帖子为代码,我曾试图寻找其他人的编辑,而且看起来他们只是在前面加空格,但它并没有为我工作, 谢谢。 – Coder 2010-05-21 00:50:06
你没有张贴SSCCE(我给你一个链接,说明它是什么),我不能什么你的代码错误告诉你。 – camickr 2010-05-21 02:19:40