powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Отловить изменение размеров
3 сообщений из 3, страница 1 из 1
Отловить изменение размеров
    #38727031
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно в компоненте обработать событие своих "изменение размеров". Как это делать, идеологически, правильно? Вызвать addComponentListener() или перекрыть метод класса? Если перекрыть метод, то какой? Фактически изменение размеров происходит в методе reshape(), но он помечен как deprecated и рекомендуется к использованию setBounds(), а setBounds() просто вызывает reshape()

И еще вопрос - обычно, если метод помечается как deprecated, то в нем происходит только вызов правильного метода. А в Java, я смотрю, делается наоборот - сплошь по исходникам из новых методов вызываются deprecated методы. Это зачем так делается?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Отловить изменение размеров
    #38727791
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Мне нужно в компоненте обработать событие своих "изменение размеров".
Что значит "своих"?

_Vasilisk_Как это делать, идеологически, правильно? Вызвать addComponentListener() или перекрыть метод класса? Если перекрыть метод, то какой? Фактически изменение размеров происходит в методе reshape(), но он помечен как deprecated и рекомендуется к использованию setBounds(), а setBounds() просто вызывает reshape()
Если работает через слушателя, то лучше через него. Это позволяет уменьшить связность классов. Но, в Swing, часто бывает что слушатели работают уже пост-фактум. А какое-то действие надо предотвратить. Тогда только переопределением метода.

_Vasilisk_И еще вопрос - обычно, если метод помечается как deprecated, то в нем происходит только вызов правильного метода. А в Java, я смотрю, делается наоборот - сплошь по исходникам из новых методов вызываются deprecated методы. Это зачем так делается?
Java требует обратной совместимости. Новые методы нужны чтобы что-то изменить. Если старый код, вызовет старый метод, а тот вызовет новую реализацию, то есть не малый шанс сломать обратную совместимость. Если новый метод вызывает старый код, но добавляет что-то в него, то старый код может вызывать старые методы не опасаясь нововведений.
...
Рейтинг: 0 / 0
Отловить изменение размеров
    #38729445
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто значит "своих"?В самом объекте поймать момент изменения размеров этого объекта
BlazkowiczЕсли работает через слушателя, то лучше через него.Ясно. Спасибо.
BlazkowiczJava требует обратной совместимости.Общая идея ясна. Т.е. совместимость не по коду, а по реализации. Т.е. deprecated метод это не тот, который будет удален в следующей версии, а просто тот, который нежелательно вызывать и переопределять нужно именно его?

Не нарвусь ли я на такую ситуацию - в текущей реализации
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
protected int newMethod() {
  return oldMethod();
}

/**
@deprecated
*/
protected int oldMethod {
  ..........
  // Implements
  ....
}


Я переопределю oldMethod, а в новой версии окажется такой код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
protected int newMethod() {
  ..........
  // Implements
  ....
}

/**
@deprecated
*/
protected int oldMethod {
  ..........
  // Implements
  ....
}


Все мое переопределение пойдет в топку и я буду долго искать причину из-за которой все сломалось
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Отловить изменение размеров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]