Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > потомки второго уровня от JFrame не работают?


Автор: slava_f 4.5.2008, 19:16
возможно ли как-то решить такую проблему?:

есть несколько окон, которые практически идентичны, но каждое содержит таблицу с разным числом строк и разными данными...

я сделал Frame0 (потомка JFrame с общими методами для всех), а также несколько разных классов Frame1, 2 и др. (потомки Frame0), но так не работает! т.е. как я понял, потомки второго уровня от JFrame уже не работают... по крайней мере при обработке событий из-за этого постоянно ошибки

что посоветуете?

Автор: v2v 4.5.2008, 19:35
Цитата(slava_f @  4.5.2008,  19:16 Найти цитируемый пост)

что посоветуете? 

уточнить что не получается сделать и какие ошибки.

Автор: niasilil 4.5.2008, 19:42
Я очень сильно удивлюсь если это так с потомками второго уровня. 

Автор: slava_f 5.5.2008, 10:29
Цитата(niasilil @ 4.5.2008,  19:42)
Я очень сильно удивлюсь если это так с потомками второго уровня.

слелал окошки прямыми потоомками JFrame, все работает!!!

просто получается дублирование одиних и тех же элеметнов и их функций... придется так

Добавлено @ 10:30
можно ли эти "одинаковости" без наследования как-то включить в классы?!

Автор: ivg 5.5.2008, 13:43
slava_f, проблема не в наследовании. Показывайте код, а иначе никто вам помочь не сможет.

Автор: niasilil 5.5.2008, 23:52
Цитата(slava_f @ 5.5.2008,  10:29)
Цитата(niasilil @ 4.5.2008,  19:42)
Я очень сильно удивлюсь если это так с потомками второго уровня.

слелал окошки прямыми потоомками JFrame, все работает!!!

просто получается дублирование одиних и тех же элеметнов и их функций... придется так

Добавлено @ 10:30
можно ли эти "одинаковости" без наследования как-то включить в классы?!

Действительно, сложно гадать. По большому счету, наследование ради code reuse не очень хорошо делать, это один из так называемых bad smells. 

Автор: Vurn 8.5.2008, 05:29
Шизануться. А не проще было создать 1 (один) класс, который от переданных параметров конструктору сам себя настраивал на "таблицу с разным числом строк и разными данными..."?

Запомните простое правило, которое не раз поможет в будущем - класс наследуется ровно в двух случаях а) надо исправить поведение родителя б) и/или при этом надо уметь передавать его по родительским ссылкам. Во всех остальных случаях надо использовать аггрегатирование.

Frame0 переписывает поведение родителя? Нет. Frame0 надо передавать в методы по родительским ссылкам? Нет. Значит он не должен наследоваться от JFrame. А должен иметь внутри ссылку на JFrame.
По типу такого:
Код

class Frame0 {
    JFrame jf;
    // ....
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)