|
|
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
Нижайше прошу прощения за несуразность вопросов и несообразительность. Ну, да вы же понимаете, я фоксовик. От некоторых людей нельзя требовать слишком многого. Пытаюсь сделать незатейливую программуську со SWING интерфейсом. Для начала, отнаследовал все визуальные классы. Такие как JLabel, JTextBox и еже с ними. Сами понимаете, с базовыми классами работать нельзя. Вдруг хозяин попросит перекрасить все метки (JLabel) в зелёный или подсветить все JTextBox над которыми проходи мышка в красный. Ну не перелопачивать же весь проект?! А так, поправлю свой, отнаследованный от базового класс, и готово! Но вот не получается подключить моих "наследников" так, что бы визуальный редактор форм их понимал (не знаю как). Т.е. если их оформить моих "наследников" как JavaBeans, то проблем у меня не будет (судя по всему). Но ведь и от наследников первого уровня (пусть оформленых как Java Beans), в реальной работе, понадобится опять делать наследников. И опять что ли делать JavaBean из JavaBean? Вобщем, сори за многословность. Как правильно наследовть визуальные классы, что бы IDE это понимали (их визуальные редакторы)? Я пытаюсь работать с NetBean и Eclips. Если они убоги, то скажите с чем работать? И как? (в плане наследования визуальных классов). ЗЫ Может я слишком многого хочу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2007, 23:39:09 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovikВдруг хозяин попросит перекрасить все метки (JLabel) в зелёный или подсветить все JTextBox над которыми проходи мышка в красный. Ну не перелопачивать же весь проект?! А так, поправлю свой, отнаследованный от базового класс, и готово! ИМХО, напрасный труд :) Классы - они ж инстансы имеют и свойства, глобальные настройки, а к ним относятся те, которые ты перечислил, можно хранить отдельно, скажем, в ресурс бандлах *.properties, и применять их в своей программе, тупо брать цвет из проперти и сетить в свой контрол, это ж всего лишь инстанс объекта, а не сам объект - не путай. А еще есть такая штюка як LookAndFeel (LAF) - можно на свой стандартный интерфейс стандартными способами навертеть свой лук энд фил, программа может измениться вообще до неузнаваемости... И это совсем не переписывание контрола с идентичой функциональностью, но с другой мордой - это просто другая морда для стандартного контрола :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2007, 23:48:15 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
Вай Три Ю, я старательно стараюсь ничего не путать. Да действительно в ресурс бандлах можно хранить свойства чего угодно.... Ой, да ладно... спасибо что откликнулся! :-) Продолжим... >>>инстанс объекта, а не сам объект - не путай Не согласен. Инстанс объекта - есть сам объект. Но не класс. (может ты это имел ввиду) мои примеры изменения поведения контроллов в готовом проекте это только примеры. Но и они показывают, что никакие ресурс бандлы не обеспечат подсветку красным при пересечении курсора мышки (согласись, ведь это может сделать только некий метод, который в ресурс не загонишь). Всего предусмотреть невозможно - это раз. Два - Новый L&F писать ради пустякового изменения поведения котролла - это странно. В объектно-ориентированном программировании никто Наследования не отменял (как и инкапсуляции и полиморфизма), и не стоит его пытаться подменить ни делегатами, ни Лук энд Филами. Вай Три Ю, скажи пожалуйста, что, визуальные редакторы Java IDE не понимают наследования? PS Надеюсь на ответ - НЕТ. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 00:16:29 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovik...Но и они показывают, что никакие ресурс бандлы не обеспечат подсветку красным при пересечении курсора мышки (согласись, ведь это может сделать только некий метод, который в ресурс не загонишь) блин, во-первых, для этого есть соответствующий лисенер, который ты прицпишь на свой контрол, а цвет ты можешь вытянуть из ресурс бандла в этом самом лисенере. Не буду я спорить, в конце концов я в свингах не спец, но все равно не пойму чем тебя не устраивают обычные компоненты и зачем тебе их именно наследовать. Может я чего-то не понимаю? Во-вторых посмотри еще вот тут http://java.sun.com/docs/books/tutorial/uiswing/components/model.html А так да, эти ущербные визреды ничего толком не умеют :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 01:50:05 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovik, тяжкое наследие фоксы? Просьте Вы это. Подобные подходы прото не применимы в Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 07:31:57 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
y3u foxovik...Но и они показывают, что никакие ресурс бандлы не обеспечат подсветку красным при пересечении курсора мышки (согласись, ведь это может сделать только некий метод, который в ресурс не загонишь) блин, во-первых, для этого есть соответствующий лисенер, который ты прицпишь на свой контрол, а цвет ты можешь вытянуть из ресурс бандла в этом самом лисенере. Не буду я спорить, в конце концов я в свингах не спец, но все равно не пойму чем тебя не устраивают обычные компоненты и зачем тебе их именно наследовать. Может я чего-то не понимаю? Во-вторых посмотри еще вот тут http://java.sun.com/docs/books/tutorial/uiswing/components/model.html А так да, эти ущербные визреды ничего толком не умеют :) есть только один базовый компонент Swing, который можно юзать без слез - JPanel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 09:29:44 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
2 foxovik: ООП != наследование. А даже очень наоборот. Делегирование часто выигрывает в гибкости. Для вашей задачи это самое то. Вам нужно не свой клас создать, а использовать Фабрику для создания к-тов. Эта фабрика и будет вешать нужные лиснеры и ставить свойства. Память подсказывает что VE эклипса генерял методы в которых можно было писать что нужно. Ну и соответственно в этих методах замените new TextBox() на JFactory.createTextbox(). Ну и неудержусь: 1. это не то чем надо заниматься - противоречит agile. You Aint Gonna Need It!!! 2. Редакторы - ф топку: FormLayout - выбор настоящих мужиков 3. Удачи на земле Жаба остальным +1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 11:20:37 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
У фокспро один редактор формочек у жавих ИДЕ много разных раного качества. Один из лучших у JBuilder, там это достаточно легко. Единственное условие - вся инициализация должна быть в методе jbnit (по нему редактор рисует в своём окошке) ну и ещё по мелочи. Остальные какие пробовал менее удобные. Пробовал нетбинс, идею, какие-то в эклипсе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 11:54:45 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! Я понял: 1. Визуальные редакторы для Явы пока не очень совершенны и поэтому в среде профессиональных разработчиков они редко используются. Более того, они не совместимы между разными IDE, что сводит их немногочисленные примущества к нулю и даже создаёт проблемы. 2. Мне надо обратить внимание на шаблон проектирования Фабрика классов. Я незаслуженно оставил эту парадигму без внимания. 3. Если мне нужны сложные переделки классов (для визуальных это: из JTextBox сделать ввод даты, сумм (как в калькуляторе), выбор из справочника...), то лучше делать их как JavaBeans (или спи..., в смысле, купить готовые), если мне надо использовать их в визуальных редакторах, или делать обычные насленики, но редакторами при создании UI не пользоваться (см. п.1.). 4. Простые доработки классов принято делать не наследованием а делегированием функциональности объектам исходного класса и настройкой свойств посредством Фабрики классов. PS 2 fixxer Ну чем это отличается от Фокса или C# или VB.NET? В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. Что в лоб, что по лбу... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:04:03 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
+1. Делегирование решает. В качестве примитивов использую JPanel, которые вешаю на фрейм. Эти панельки могут содержать бесконечную композицию из компонентов, с которыми можно производить любые манипуляции. А все визуальные редакторы от лукавого... Если, конечно, задачей не стоит накидать три поля и две кнопки для простой формочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:10:14 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
авторА все визуальные редакторы от лукавого... Если, конечно, задачей не стоит накидать три поля и две кнопки для простой формочки. можно где-то посмотреть на невиданые красоты ваших изделий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:13:59 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
1024 авторА все визуальные редакторы от лукавого... Если, конечно, задачей не стоит накидать три поля и две кнопки для простой формочки. можно где-то посмотреть на невиданые красоты ваших изделий? а на ваши? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:18:38 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovik 2 fixxer Ну чем это отличается от Фокса или C# или VB.NET? В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. Что в лоб, что по лбу... :-) Не путайте кислое с пресным. Наследование и делегирование это просто два разных механизма расширения функциональности существующих классов. Говорить что где чаще/реже используется некорректно. Почитайте GoF, там в начале описана разница, преимущества и недостатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:49:56 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
y3uа на ваши? Шутите? Вот же: http://sss1024.googlepages.com/ Ох ленив, Java-программист, две ссылки нажать ленится. Вот мы фоксовики - народ работящий :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:54:45 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
fixxerПочитайте GoF Что почитать? Сори... я не такой умный. GoF это что? (а главное, где?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:56:59 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovik fixxerПочитайте GoF Что почитать? Сори... я не такой умный. GoF это что? (а главное, где?) Это я сорри. Просто привык, что большинство знакомо с этой книгой хотя бы понаслышке. Э. Гамма Паттерны проектирования. Могу намылить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 13:00:32 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
Пожалуйста! Если можно! Вот сюда: foxovik@mail.ru А то я её на столе держал, держал, всё прочесть собирался... Да так и ушла сея книга куда-то. А уж в электрическом-то виде... Спасибо, огромное!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 13:09:08 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
fixxer foxovik 2 fixxer Ну чем это отличается от Фокса или C# или VB.NET? В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. Что в лоб, что по лбу... :-) Не путайте кислое с пресным. Наследование и делегирование это просто два разных механизма расширения функциональности существующих классов. Говорить что где чаще/реже используется некорректно. Почитайте GoF, там в начале описана разница, преимущества и недостатки. Интересно, а каким образом GoF может помочь в данном случае? Убедить, что RAD средства это скучно, а потому нужно писать код в ручную превращая его в нагромаждение изумительным образом взаимодействующих объектов? Ну..., такой подход тоже имеет право на жизнь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 13:21:55 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Интересно, а каким образом GoF может помочь в данном случае? Убедить, что RAD средства это скучно, а потому нужно писать код в ручную превращая его в нагромаждение изумительным образом взаимодействующих объектов? Ну..., такой подход тоже имеет право на жизнь :) Меня просто смутила формулировка: foxovik В фоксе чуть больше наследования и реже делегирование. В яве чаще делегирование и реже наследование. А про RAD я ничего не говорил. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 13:48:27 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
авторЭ. Гамма Паттерны проектирования Если не сложно, намыльте пожалуйста на erm31@yandex.ru Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 14:02:45 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
termit31 авторЭ. Гамма Паттерны проектирования Если не сложно, намыльте пожалуйста на erm31@yandex.ru Спасибо. тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 14:58:26 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovik 3. Если мне нужны сложные переделки классов (для визуальных это: из JTextBox сделать ввод даты, сумм (как в калькуляторе), выбор из справочника...), то лучше делать их как JavaBeans (или спи..., в смысле, купить готовые), если мне надо использовать их в визуальных редакторах, или делать обычные насленики, но редакторами при создании UI не пользоваться (см. п.1.). JFormattedTextField - только чур не капризничать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 15:22:45 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
см. http://www.instantiations.com/windowbuilderpro/default.htm + читайте правильные книги по современному ОО-проектированию. Это я к тому что использовать наследование чтобы обеспечить одинаковый цвет кнопок - это слишком сильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 16:02:42 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
exppJFormattedTextField - только чур не капризничать Ладно, не буду капризничать. Уговорили, задам я свойства JFormattedTextField и получу нечто пригодное для ввода даты, сумм, массы, объемов и т.п. ОК. Имею на форме вот такие четыре контрола. А дальше, что делать? Ведь в приложении таких контролов десятки, если не сотни. Что каждому определять свойства? Да? Что вы посоветуете? Фабрику, Наследование или ручное задание свойств при каждом употреблении JFormattedTextField. Или что-то ещё? funikovyuriиспользовать наследование чтобы обеспечить одинаковый цвет кнопок - это слишком сильно. ПОЧЕМУ? Я иногда делаю наследование даже не переопределяя ни одного метода и ни одного свойства. Исключительно как задел на будующее. Скажем, объект ввода массы и объема могут быть разных классов но совершенно идентичными (масса и объем это разные сущности, хотя в конкретном приложении они могут быть сходными). Я делаю это потому, что в любой момент может потребоваться сделать их различными. И тогда достаточно подправить один класс и решение готово! А не лазить по всем формам и править свойства JFormattedTextField. Почему этот подход никому не нравится из здесь присутствующих? Спасибо за ссылку, кстати. Почитаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 16:39:55 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
Дельфисты прибежали У NetBeans очень удобный редактор, а у JBuilder какой-то версии (2006, что-ли), он очень глючный. Бр-рр, как вспомню. Есть такой проект, как SwingLabs, и его компонент JXPanel. Цвет рамочек меняется через Border, можно просто пробежаться по всем компонентам при исполнение программы и назначить цвет фона. PS Сделать наследников всех классов - это сколько же свободного времени надо иметь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 16:43:30 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovikИмею на форме вот такие четыре контрола. А дальше, что делать? Ведь в приложении таких контролов десятки, если не сотни. Что каждому определять свойства? Да? фабрика супер панелек. для дизайна гуйни советую Presenter Pattern by Fowler foxovikПочему этот подход никому не нравится из здесь присутствующих? насмотрелись уже ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 16:51:25 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
авторУ NetBeans очень удобный редактор, а у JBuilder какой-то версии (2006, что-ли), он очень глючный. Бр-рр, как вспомню. у нетбинса редактор рисует по файлу собственного формата а в жбилдере по коду. У нетбинса иногда легче бывает залезть в хмл-файл настроек рисования форм чем что-то править в его редакторе. У жбилдера есть некоторые требования к коду форм чтоб он смог их отрисоать в редакторе, например он не может отрисовать форму наследованую от абстрактного класса что естественно описано в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 16:53:08 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
VEP также работает, Jigloo и тоже. Кстати, интересно. В JBuilder 2007 сохранился ГИП-построитель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:07:06 |
|
||
|
Наследование визуальных классов. Как?
|
|||
|---|---|---|---|
|
#18+
foxovikЯ иногда делаю наследование даже не переопределяя ни одного метода и ни одного свойства. Исключительно как задел на будующее. ... Почему этот подход никому не нравится из здесь присутствующих? Если коротко, то потому, что нельзя знать наперёд, что произойдёт в будущем. Проведение всестороннего анализа будущих изменений тербований дело заманчивое, но крайне не надёжное. Между тем занятие это требует большого вложения труда и средств, окупаемость которых остаётся под вопросом, т.к. нет никакой гарантии, что предполагаемые события когда-нибудь наступят. Поэтому бытует мнение (особенно в среде приверженцев экстремального программирования и разработки управляемой тестами), что никаких заделов на будущее делать не нужно. Следование данному правилу позволяет выполнять не большие проекты существенно быстрее и качественнее, т.к. их структура остаётся простой, код легко тестируется unit-тестами и, как следствие, применение рефакторингов и прочих модификаций кода удаётся осуществлять достаточно просто. Тем не менее, для ряда проектов такой подход чреват проблемами, что не удивительно, т.к. следования всякого рода эвристикам (к числу которых относятся и ООА, и ТDD, да и любой процесс разработки) не может гарантировать получения результата за конечное число шагов :) Здесь на помощь должен придти здравый смысл, который говорит: Если верятность будущих изменений велика, то, прежде чем завершить фрагмент кода, нужно хорошенько подумать - а легко ли будет при не обходимости преобразовать текущее решение для реализации этих изменений? Ну, а принятие решения по этому вопросу упирается прежде всего в индивидуальный опыт программиста или команды разработчиков. Имхо, дать практически полезные рекомендации, не зная тонкостей решаемой задачи, тут не возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 12:55:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2145977]: |
0ms |
get settings: |
14ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
53ms |
get topic data: |
20ms |
get forum data: |
4ms |
get page messages: |
97ms |
get tp. blocked users: |
2ms |
| others: | 310ms |
| total: | 540ms |

| 0 / 0 |
