Какова лучшая методология Java GUI для простоты обслуживания и улучшения? - PullRequest
0 голосов
/ 01 июля 2011

Мне нужен совет о том, как переписать графический интерфейс Java. Конечная цель легче поддерживать и улучшать.

Я создал интерфейс клиента Java-апплета, который действует и ведет себя подобно Eclipse. Разработчик может создавать свои формы ввода данных без использования одной строки кода (перетаскивание) и определять его атрибут. Эта часть довольно хорошо проработана. тем не менее, у меня осталось более 40000 строк кодов, которые очень сложно поддерживать.

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

Рассмотрение:

-Java-веб-апплет (потому что он работает в любом браузере с установленным J2RE)

-runs на медленной машине

- развертывание около 200 узлов и рост

Проблемы, которые у меня сейчас есть:

-Слухи повсюду. иногда находится внутри element.AddListener (новый слушатель ..). Иногда находится вне класса, может быть в другом пакете, который содержит все остальные слушателя. Вопрос: всегда ли хорошая идея поместить всех слушателей в другой пакет? если это так, я не могу использовать «это». чтобы получить нужную мне ссылку.

-JTable для меня это убийца :( проблема, с которой я столкнулся на Не удается получить доступ к данным столбца Jtable после того, как набор невидимый все еще сохраняется. Представьте, что у меня есть JTable с 3 столбцами. Первый столбец - dropDown, второй и третий столбец - это текстовое поле. Когда значение выбирается из выпадающего списка, мне нужно опираться на выбранное значение и обновлять второй столбец и третий столбец. Проблема в том, что если пользователь щелкает и быстро нажимает на другую строку , он будет обновлен до столбца, который находится в неправильной строке.

-В настоящее время программа закодирована в том смысле, что она является однопоточной. всякий раз, когда пользователь устанавливает http-соединение со стороной сервера, читает файл, пишет файл и т. д., мне нужно сделать его асинхронным процессом, чтобы он не ощущался как «зависание программы». Каков наилучший способ сделать это?

Очень ценю помощь здесь! Спасибо!

Ответы [ 3 ]

0 голосов
/ 01 июля 2011

используйте dsl для графического интерфейса пользователя:

  • swinghtmltemplate
  • swixml
  • yaml

есть еще некоторые из них

это избавит от необходимости описывать слушателей, разрешить привязку в dsl-манере

0 голосов
/ 01 июля 2011

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

Перед тем, как приступить к переписыванию проекта, я бы начал с определения простых стандартов разработки. Нравится структура пакетов и слушатели. Я бы также рекомендовал разбить приложение на хорошо модульные модули или подпроекты.

Кроме того, спросите себя, действительно ли вам нужно переписать приложение или ему просто нужен TLC. Как консультант и директор по информационным технологиям, я вижу, что разработчики всегда хотят переписывать приложения только потому, что они узнали что-то новое или не считают это нормальным. Когда они приходят ко мне и говорят, что это мусор, и его нужно переписать, я обычно отправляю их обратно и прошу их предложить альтернативные решения для переписывания, а также влияние каждого решения, в том числе - ничего не делать. Во многих случаях мы вообще не писали заявление.

[ОБНОВЛЕНО] Наконец, если вы собираетесь переписать, я бы использовал подход Domain Driven Design и MVC . Да, я сказал MVC для настольных приложений! . У нас был большой успех с этими методологиями. Это сохраняет хорошее разделение проблем и делает вещи легко пригодными для повторного использования. Он также предоставляет структуру для простого переключения уровня представления. Самое главное, что это легко для модульного тестирования, и любой разработчик, который понимает MVC, может понять основы вашего проекта, не зная деталей.

У меня есть еще несколько мыслей, но я пока оставлю это здесь. ;)

0 голосов
/ 01 июля 2011

Почему бы вам просто не использовать среду eclipse для создания собственного графического интерфейса вместо того, чтобы писать его с нуля в Swing?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...