У меня есть общественный класс, который имеет метод и экземпляра следующую переменную: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;
Каждый из указанных выше способов не соответствуют закодировать непосредственно ниже до тех пор, next // комментарий метода. Я не понимаю, почему я не могу использовать переменную экземпляра класса и добавить ее в JPanel
в качестве компонента-слушателя.
Что происходит в вышеприведенных случаях, где я говорю, что метод не работает, так это то, что я не получаю сообщения журнала "RESIZE 3"
. Во всех случаях, когда я указываю, что он работает, я получаю сообщения "RESIZE 3"
.
Внешний класс является общедоступным без каких-либо изменений, кроме того, что он реализует интерфейс, который я создал (который не имеет методов или переменных, общих с перечисленными выше методами и переменными).
Если кто-нибудь может мне помочь, я бы очень признателен. Эта проблема не имеет для меня никакого смысла, код должен быть идентичным.
Вы можете использовать переменную класса. Что-то не так с вашим кодом. Опубликуйте свой SSCCE: http://sscce.org – camickr
Извините, я не понимаю, я использую переменную класса, и она находится в коде, который я написал выше. Что вы имеете в виду, что что-то еще не так с моим кодом? Я также пробовал следующее ResizeListener listener = new ResizeListener(); panelResizeListener = прослушиватель; // ИМЕЮ ЭТУ ЛИНИЮ В РАЗРЕШЕНИЯХ Я не понимаю, почему imagePanel.addComponentListener (слушатель); Также вопрос на стороне, я не знаю, как отформатировать мои сообщения как код, я попытался посмотреть на изменения других людей, и похоже, что они просто добавляют пробелы впереди, но это не работает для меня , спасибо. – Coder
Вы не опубликовали сообщение SSCCE (я дал вам ссылку, которая объясняет, что это такое), я не могу сказать вам, что не так с вашим кодом. – camickr