powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Наследование визуальных классов. Как?
29 сообщений из 29, показаны все 2 страниц
Наследование визуальных классов. Как?
    #34471316
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нижайше прошу прощения за несуразность вопросов и несообразительность.
Ну, да вы же понимаете, я фоксовик. От некоторых людей нельзя требовать слишком
многого.

Пытаюсь сделать незатейливую программуську со SWING интерфейсом.
Для начала, отнаследовал все визуальные классы. Такие как JLabel, JTextBox и еже с ними.
Сами понимаете, с базовыми классами работать нельзя. Вдруг хозяин попросит
перекрасить все метки (JLabel) в зелёный или подсветить все JTextBox над которыми проходи мышка в красный. Ну не перелопачивать же весь проект?! А так, поправлю свой, отнаследованный от базового класс, и готово!
Но вот не получается подключить моих "наследников" так, что бы визуальный редактор форм их понимал (не знаю как). Т.е. если их оформить моих "наследников" как JavaBeans, то проблем у меня не будет (судя по всему). Но ведь и от наследников первого уровня (пусть оформленых как Java Beans), в реальной работе, понадобится опять делать наследников. И опять что ли делать JavaBean из JavaBean?
Вобщем, сори за многословность.
Как правильно наследовть визуальные классы, что бы IDE это понимали (их визуальные редакторы)?
Я пытаюсь работать с NetBean и Eclips. Если они убоги, то скажите с чем работать? И как? (в плане наследования визуальных классов).

ЗЫ
Может я слишком многого хочу?
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34471323
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovikВдруг хозяин попросит
перекрасить все метки (JLabel) в зелёный или подсветить все JTextBox над которыми проходи мышка в красный. Ну не перелопачивать же весь проект?! А так, поправлю свой, отнаследованный от базового класс, и готово!

ИМХО, напрасный труд :) Классы - они ж инстансы имеют и свойства, глобальные настройки, а к ним относятся те, которые ты перечислил, можно хранить отдельно, скажем, в ресурс бандлах *.properties, и применять их в своей программе, тупо брать цвет из проперти и сетить в свой контрол, это ж всего лишь инстанс объекта, а не сам объект - не путай.
А еще есть такая штюка як LookAndFeel (LAF) - можно на свой стандартный интерфейс стандартными способами навертеть свой лук энд фил, программа может измениться вообще до неузнаваемости... И это совсем не переписывание контрола с идентичой функциональностью, но с другой мордой - это просто другая морда для стандартного контрола :)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34471345
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вай Три Ю, я старательно стараюсь ничего не путать.
Да действительно в ресурс бандлах можно хранить свойства чего угодно....

Ой, да ладно... спасибо что откликнулся! :-)
Продолжим...

>>>инстанс объекта, а не сам объект - не путай
Не согласен.
Инстанс объекта - есть сам объект. Но не класс. (может ты это имел ввиду)

мои примеры изменения поведения контроллов в готовом проекте это только примеры. Но и они
показывают, что никакие ресурс бандлы не обеспечат подсветку красным при пересечении курсора мышки (согласись, ведь это может сделать только некий метод, который в ресурс не загонишь). Всего предусмотреть невозможно - это раз. Два - Новый L&F писать ради пустякового изменения поведения котролла - это странно. В объектно-ориентированном программировании никто Наследования не отменял (как и инкапсуляции и полиморфизма), и не стоит его пытаться подменить ни делегатами, ни Лук энд Филами.
Вай Три Ю, скажи пожалуйста, что, визуальные редакторы Java IDE не понимают наследования?

PS
Надеюсь на ответ - НЕТ. ;-)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34471401
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovik...Но и они
показывают, что никакие ресурс бандлы не обеспечат подсветку красным при пересечении курсора мышки (согласись, ведь это может сделать только некий метод, который в ресурс не загонишь)

блин, во-первых, для этого есть соответствующий лисенер, который ты прицпишь на свой контрол, а цвет ты можешь вытянуть из ресурс бандла в этом самом лисенере. Не буду я спорить, в конце концов я в свингах не спец, но все равно не пойму чем тебя не устраивают обычные компоненты и зачем тебе их именно наследовать. Может я чего-то не понимаю? Во-вторых посмотри еще вот тут http://java.sun.com/docs/books/tutorial/uiswing/components/model.html

А так да, эти ущербные визреды ничего толком не умеют :)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34471478
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovik, тяжкое наследие фоксы? Просьте Вы это. Подобные подходы прото не применимы в Java.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34471633
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
y3u foxovik...Но и они
показывают, что никакие ресурс бандлы не обеспечат подсветку красным при пересечении курсора мышки (согласись, ведь это может сделать только некий метод, который в ресурс не загонишь)

блин, во-первых, для этого есть соответствующий лисенер, который ты прицпишь на свой контрол, а цвет ты можешь вытянуть из ресурс бандла в этом самом лисенере. Не буду я спорить, в конце концов я в свингах не спец, но все равно не пойму чем тебя не устраивают обычные компоненты и зачем тебе их именно наследовать. Может я чего-то не понимаю? Во-вторых посмотри еще вот тут http://java.sun.com/docs/books/tutorial/uiswing/components/model.html

А так да, эти ущербные визреды ничего толком не умеют :)

есть только один базовый компонент Swing, который можно юзать без слез - JPanel
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472027
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 foxovik:

ООП != наследование. А даже очень наоборот. Делегирование часто выигрывает в гибкости. Для вашей задачи это самое то. Вам нужно не свой клас создать, а использовать Фабрику для создания к-тов. Эта фабрика и будет вешать нужные лиснеры и ставить свойства. Память подсказывает что VE эклипса генерял методы в которых можно было писать что нужно. Ну и соответственно в этих методах замените new TextBox() на JFactory.createTextbox().
Ну и неудержусь:
1. это не то чем надо заниматься - противоречит agile. You Aint Gonna Need It!!!
2. Редакторы - ф топку: FormLayout - выбор настоящих мужиков
3. Удачи на земле Жаба

остальным +1.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472184
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У фокспро один редактор формочек у жавих ИДЕ много разных раного качества. Один из лучших у JBuilder, там это достаточно легко. Единственное условие - вся инициализация должна быть в методе jbnit (по нему редактор рисует в своём окошке) ну и ещё по мелочи. Остальные какие пробовал менее удобные. Пробовал нетбинс, идею, какие-то в эклипсе
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472221
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы!
Я понял:
1. Визуальные редакторы для Явы пока не очень совершенны и поэтому в среде профессиональных разработчиков они редко используются. Более того, они не совместимы между разными IDE, что сводит их немногочисленные примущества к нулю и даже создаёт проблемы.
2. Мне надо обратить внимание на шаблон проектирования Фабрика классов. Я незаслуженно оставил эту парадигму без внимания.
3. Если мне нужны сложные переделки классов (для визуальных это: из JTextBox сделать ввод даты, сумм (как в калькуляторе), выбор из справочника...), то лучше делать их как JavaBeans (или спи..., в смысле, купить готовые), если мне надо использовать их в визуальных редакторах, или делать обычные насленики, но редакторами при создании UI не пользоваться (см. п.1.).
4. Простые доработки классов принято делать не наследованием а делегированием функциональности объектам исходного класса и настройкой свойств посредством Фабрики классов.

PS
2 fixxer
Ну чем это отличается от Фокса или C# или VB.NET?
В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. Что в лоб, что по лбу... :-)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472248
Anarion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+1. Делегирование решает.
В качестве примитивов использую JPanel, которые вешаю на фрейм. Эти панельки могут содержать бесконечную композицию из компонентов, с которыми можно производить любые манипуляции.

А все визуальные редакторы от лукавого... Если, конечно, задачей не стоит накидать три поля и две кнопки для простой формочки.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472268
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА все визуальные редакторы от лукавого... Если, конечно, задачей не стоит накидать три поля и две кнопки для простой формочки.

можно где-то посмотреть на невиданые красоты ваших изделий?
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472291
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024 авторА все визуальные редакторы от лукавого... Если, конечно, задачей не стоит накидать три поля и две кнопки для простой формочки.

можно где-то посмотреть на невиданые красоты ваших изделий?

а на ваши?
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472450
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovik
2 fixxer
Ну чем это отличается от Фокса или C# или VB.NET?
В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. Что в лоб, что по лбу... :-)

Не путайте кислое с пресным. Наследование и делегирование это просто два разных механизма расширения функциональности существующих классов. Говорить что где чаще/реже используется некорректно. Почитайте GoF, там в начале описана разница, преимущества и недостатки.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472483
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y3uа на ваши?

Шутите?
Вот же: http://sss1024.googlepages.com/
Ох ленив, Java-программист, две ссылки нажать ленится.
Вот мы фоксовики - народ работящий :-)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472492
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerПочитайте GoF
Что почитать?
Сори... я не такой умный. GoF это что? (а главное, где?)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472509
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovik fixxerПочитайте GoF
Что почитать?
Сори... я не такой умный. GoF это что? (а главное, где?)

Это я сорри. Просто привык, что большинство знакомо с этой книгой хотя бы понаслышке.
Э. Гамма Паттерны проектирования. Могу намылить.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472537
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста! Если можно!
Вот сюда: foxovik@mail.ru
А то я её на столе держал, держал, всё прочесть собирался... Да так и ушла сея книга куда-то.
А уж в электрическом-то виде...

Спасибо, огромное!!!
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472587
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer foxovik
2 fixxer
Ну чем это отличается от Фокса или C# или VB.NET?
В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. Что в лоб, что по лбу... :-)

Не путайте кислое с пресным. Наследование и делегирование это просто два разных механизма расширения функциональности существующих классов. Говорить что где чаще/реже используется некорректно. Почитайте GoF, там в начале описана разница, преимущества и недостатки.

Интересно, а каким образом GoF может помочь в данном случае?

Убедить, что RAD средства это скучно, а потому нужно писать код в ручную превращая его в нагромаждение изумительным образом взаимодействующих объектов?

Ну..., такой подход тоже имеет право на жизнь :)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472695
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
Интересно, а каким образом GoF может помочь в данном случае?

Убедить, что RAD средства это скучно, а потому нужно писать код в ручную превращая его в нагромаждение изумительным образом взаимодействующих объектов?

Ну..., такой подход тоже имеет право на жизнь :)

Меня просто смутила формулировка:

foxovik
В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование.

А про RAD я ничего не говорил. :-)
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34472762
termit31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭ. Гамма Паттерны проектирования
Если не сложно, намыльте пожалуйста на erm31@yandex.ru
Спасибо.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473033
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
termit31 авторЭ. Гамма Паттерны проектирования
Если не сложно, намыльте пожалуйста на erm31@yandex.ru
Спасибо.

тынц
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473142
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovik
3. Если мне нужны сложные переделки классов (для визуальных это: из JTextBox сделать ввод даты, сумм (как в калькуляторе), выбор из справочника...), то лучше делать их как JavaBeans (или спи..., в смысле, купить готовые), если мне надо использовать их в визуальных редакторах, или делать обычные насленики, но редакторами при создании UI не пользоваться (см. п.1.).


JFormattedTextField - только чур не капризничать
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473338
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. http://www.instantiations.com/windowbuilderpro/default.htm

+ читайте правильные книги по современному ОО-проектированию. Это я к тому что использовать наследование чтобы обеспечить одинаковый цвет кнопок - это слишком сильно.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473499
foxovik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exppJFormattedTextField - только чур не капризничать

Ладно, не буду капризничать. Уговорили, задам я свойства JFormattedTextField и получу нечто пригодное для ввода даты, сумм, массы, объемов и т.п. ОК. Имею на форме вот такие четыре контрола.
А дальше, что делать? Ведь в приложении таких контролов десятки, если не сотни. Что каждому определять свойства? Да?
Что вы посоветуете? Фабрику, Наследование или ручное задание свойств при каждом употреблении JFormattedTextField. Или что-то ещё?

funikovyuriиспользовать наследование чтобы обеспечить одинаковый цвет кнопок - это слишком сильно.
ПОЧЕМУ?
Я иногда делаю наследование даже не переопределяя ни одного метода и ни одного свойства. Исключительно как задел на будующее. Скажем, объект ввода массы и объема могут быть разных классов но совершенно идентичными (масса и объем это разные сущности, хотя в конкретном приложении они могут быть сходными). Я делаю это потому, что в любой момент может потребоваться сделать их различными. И тогда достаточно подправить один класс и решение готово! А не лазить по всем формам и править свойства JFormattedTextField.
Почему этот подход никому не нравится из здесь присутствующих?

Спасибо за ссылку, кстати. Почитаю.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473521
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дельфисты прибежали
У NetBeans очень удобный редактор, а у JBuilder какой-то версии (2006, что-ли), он очень глючный. Бр-рр, как вспомню.
Есть такой проект, как SwingLabs, и его компонент JXPanel. Цвет рамочек меняется через Border, можно просто пробежаться по всем компонентам при исполнение программы и назначить цвет фона.
PS Сделать наследников всех классов - это сколько же свободного времени надо иметь.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473556
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovikИмею на форме вот такие четыре контрола.
А дальше, что делать? Ведь в приложении таких контролов десятки, если не сотни. Что каждому определять свойства? Да?
фабрика супер панелек. для дизайна гуйни советую Presenter Pattern by Fowler
foxovikПочему этот подход никому не нравится из здесь присутствующих?
насмотрелись уже ...
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473565
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ NetBeans очень удобный редактор, а у JBuilder какой-то версии (2006, что-ли), он очень глючный. Бр-рр, как вспомню.

у нетбинса редактор рисует по файлу собственного формата а в жбилдере по коду. У нетбинса иногда легче бывает залезть в хмл-файл настроек рисования форм чем что-то править в его редакторе. У жбилдера есть некоторые требования к коду форм чтоб он смог их отрисоать в редакторе, например он не может отрисовать форму наследованую от абстрактного класса что естественно описано в документации.
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34473640
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VEP также работает, Jigloo и тоже. Кстати, интересно. В JBuilder 2007 сохранился ГИП-построитель?
...
Рейтинг: 0 / 0
Наследование визуальных классов. Как?
    #34475739
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxovikЯ иногда делаю наследование даже не переопределяя ни одного метода и ни одного свойства. Исключительно как задел на будующее.
...
Почему этот подход никому не нравится из здесь присутствующих?


Если коротко, то потому, что нельзя знать наперёд, что произойдёт в будущем.

Проведение всестороннего анализа будущих изменений тербований дело заманчивое, но крайне не надёжное. Между тем занятие это требует большого вложения труда и средств, окупаемость которых остаётся под вопросом, т.к. нет никакой гарантии, что предполагаемые события когда-нибудь наступят.

Поэтому бытует мнение (особенно в среде приверженцев экстремального программирования и разработки управляемой тестами), что никаких заделов на будущее делать не нужно.

Следование данному правилу позволяет выполнять не большие проекты существенно быстрее и качественнее, т.к. их структура остаётся простой, код легко тестируется unit-тестами и, как следствие, применение рефакторингов и прочих модификаций кода удаётся осуществлять достаточно просто.

Тем не менее, для ряда проектов такой подход чреват проблемами, что не удивительно, т.к. следования всякого рода эвристикам (к числу которых относятся и ООА, и ТDD, да и любой процесс разработки) не может гарантировать получения результата за конечное число шагов :)
Здесь на помощь должен придти здравый смысл, который говорит:
Если верятность будущих изменений велика, то, прежде чем завершить фрагмент кода, нужно хорошенько подумать - а легко ли будет при не обходимости преобразовать текущее решение для реализации этих изменений?
Ну, а принятие решения по этому вопросу упирается прежде всего в индивидуальный опыт программиста или команды разработчиков.

Имхо, дать практически полезные рекомендации, не зная тонкостей решаемой задачи, тут не возможно.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Наследование визуальных классов. Как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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