Какой контейнер верхнего уровня лучше для этого дизайна, JFrame с Jpanels или JDesktop с JInternalFrames

Я новичок в Swing и AWT, я хочу создать графический интерфейс с использованием Netbeans. Моему графическому интерфейсу требуются три области, о которых я сейчас думаю как о JPanels на JFrame. Мне требуется "Рисование" панель, которая будет прослушивать ввод мыши и рисовать фигуры Java2D. Панель рисования будет прикреплена к левому верхнему углу. Две другие области являются & quot; Свойствами & quot; панель прокрутки и «Контроллер» панель прокрутки. Панель контроллера будет определять, какие нарисованные элементы будут отображаться с помощью кнопок, а панель прокрутки свойств будет отображать сведения о любом объекте фигуры, который щелкается на панели чертежа (конечные точки, цвет и т. Д.).

Типичный вариант использования области рисования таков, что первый щелчок в области рисования будет первым набором координат для фигуры, т.е. IE: линия. Этот щелчок будет зафиксирован как объект point2d. Второй щелчок будет вторым объектом point2D, и между ними будет построена линия. Область контроллера будет иметь такие кнопки, как «Круг». & Quot; линия & Quot; "Elipse" и т. д. В зависимости от того, какая кнопка контроллера нажата, в области рисования будут отображаться только фигуры этого типа. Панели прокрутки контроллера и свойств не будут перемещаться, они будут заблокированы и изменят размеры к нижней и правой сторонам графического интерфейса, соответственно.

Как новичок, я борюсь с лучшими компонентами для использования. Я читал о JDesktop и JInternalFrame, но, похоже, мне все это действительно не нужно. Простого JFrame с тремя JPanels должно быть достаточно, верно? В частности, я думаю, что мне нужен JFrame верхнего уровня, с JPanel для рамки рисования и двумя JScrollPanel. Мне понадобится прослушиватель мыши на панели рисования, чтобы зафиксировать координаты каждого щелчка, и прослушиватели для каждой кнопки на панели управления. Могу ли я поместить слушатель мыши в JPanel и нарисовать на нем фигуры Java2D, или мне понадобится другой (лучший?) Контейнер внутри JPanel для рисования?

 xelco5212 июн. 2012 г., 21:30
 trashgod12 июн. 2012 г., 21:04
+1 за положительный ответ на конструктивную критику.
 xelco5212 июн. 2012 г., 20:44
Мне бы очень хотелось посмотреть, что рефакторинг для краткости сделает с этим постом. Бьюсь об заклад, вы можете правильно выразить свой вопрос в 50% пространства.
 NickAbbey12 июн. 2012 г., 20:58
Спасибо за конструктивную критику, поскольку я начинаю изучать все это. Может быть, после того, как я выучу все, что мне нужно знать, я смогу «сделать рефакторинг для краткости». Конечно, как только я все это узнал, сам вопрос спорный.

Ответы на вопрос(3)

области управления и области свойств. JSplitPane позволяет пользователю изменять размеры областей, щелкая и перетаскивая линию разделения мышью.

enter image description here

(Используйте JFrame для компонента верхнего уровня.)

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

 12 июн. 2012 г., 21:16
Возможно, вы захотите поместить JScrollPanes в каждую из трех логических областей. Затем вы можете добавить свой JPanels, содержащий виджеты (и один, например, GraphPanel) в JScrollPanes. Если вам не нужно изменять размеры и прокручивать, вам будет намного легче, если вы создадите приложение, которое не изменяет размеры и не прокручивает.
 NickAbbey12 июн. 2012 г., 21:24
На самом деле я просто думал, что покончить с изменением размера - это, вероятно, хороший ход (на данный момент), но я думаю, что области управления и свойства должны будут прокручиваться, потому что все элементы не подходят. Я уже получил быстрый каркас с использованием разделенных панелей, и мне нравится, как он работает до сих пор. Я собираюсь просмотреть учебник по разделенной панели наdocs.oracle.com/javase/tutorial/uiswing/components/… и, вероятно, в конечном итоге использовать этот дизайн.
 NickAbbey12 июн. 2012 г., 21:07
Интересно, похоже, я должен немного прочитать / попрактиковаться в разделенных панелях, чтобы увидеть, будут ли они полезны для моего проекта. будет ли прокручиваться область управления и области свойств для разделенной панели 2 или мне нужно вложить панель прокрутки внутри каждой панели? Также - Будут ли мне нужны какие-то дополнительные компоненты, вложенные в область рисования, или я смогу напрямую слушать и рисовать на этой панели?
 12 июн. 2012 г., 21:15
@NickAbbey вы, вероятно, хотите прокрутки во всех трех областях.

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

 NickAbbey12 июн. 2012 г., 21:01
Мне не нужно, чтобы пользователи перестраивали интерфейс. На самом деле, пока я специально не хочу, чтобы они могли. Google на самом деле дал мне этот пример, но я не был уверен, насколько он уместен. По вашей рекомендации я более внимательно посмотрю. Спасибо!
 12 июн. 2012 г., 21:04
Если вы не хотите, чтобы они переставляли, обязательно избегайте JInternalFrames. Как я и предложил, используйте JFrame с JPanels. @ У Майка Кларка есть хороший пример в его ответе.
Решение Вопроса

GraphPanel может дать вам некоторые идеи для создания такого приложения.

GraphPanel screenshot

 NickAbbey12 июн. 2012 г., 20:58
Мне это нравится, спасибо за ссылку, я посмотрю в источнике некоторые идеи о том, как это сделать.
 12 июн. 2012 г., 21:40
Также рассмотримJToolBar для панели управления.

Ваш ответ на вопрос