Это конец предыдущая публикация , в котором я рассказал о том, как с нуля создать интерфейс с интерактивной графикой в объектно-ориентированной среде разработки.
В первой части мы рассмотрели ключевые архитектурные идеи этой системы: использование методов композиции, делегирования и шаблонов.
Теперь я перехожу к более рутинным вопросам и рассмотрю создание класса, отвечающего за обработку событий мыши, масштабирование, панорамирование, выбор объектов и перетаскивание.
Класс Диаграммпанель
Визуальные компоненты
Исходный код класса DiagramPanel, в отличие от DiagramObject, не содержит каких-либо нетривиальных структурных решений; он выполняет только рутинные задачи.Однако его код примерно на 30% длиннее, чем код DiagramObject. В нем собрана вся специфика, связанная со средой разработки: если вы захотите переписать фреймворк с Java на другую среду (как мы в свое время сделали, переведя его с Delphi на Java), основные трудности будут связаны с DiagramObject. При работе с Swing класс DiagramPanel наследуется от класса javax.swing.JPanel и представляет собой компонент визуального интерфейса, который можно разместить в форме приложения.
Наше демонстрационное приложение состоит только из этой панели.
Структурно DiagramPanel состоит из:
- горизонтальные и вертикальные полосы прокрутки javax.swing.JScrollBar (переменные hsb и vsb),
- верхняя панель с экранными кнопками,
- заполнение всего центрального пространства области «рисования», занимаемого объектом DiagramPanel.DiagramCanvas, потомком java.awt.Canvas. Класс java.awt.Canvas должен создать потомка с переопределенным методом Paint(Graphics g), который принимает контекст рисования (Graphics) в качестве аргумента, что мы и делаем в классе DiagramCanvas, вложенном в DiagramPanel. Метод Paint(Graphics g) вызывается автоматически, в частности, при изменении размера окна и изменении перекрытия окон, поэтому диаграмма не «повреждается» этими действиями.
Рендеринг диаграммы с точки зрения DiagramPanel
Давайте подробнее рассмотрим код метода Paint(Graphics g) класса DiagramPanel.DiagramCanvas. Если опустить некоторые детали, то это выглядит так: источник Теги: #ООП #Пользовательский интерфейс #интерактивная графика #шаблоны проектирования #uml #программирование #java #Системный анализ и проектирование #проектирование и рефакторинг #ООП-
Найден Немецкий Уран 1943 Года
19 Oct, 24