我有一个公共类,它有以下方法和实例变量:
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"
消息。
外部类是公共的,没有其他修改,除了它实现了我创建的接口(没有与上面列出的方法和变量相同的方法或变量)。
如果有人能帮助我,我会非常感激。这个问题对我没有意义,代码应该是相同的。
答案 0 :(得分:2)
答案 1 :(得分:1)
我认为你的问题是你在使用它之后声明了panelResizeListener。这通常可以杀死任何东西。