我有它具有下列方法和實例變量一個公共類: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