2015-05-01 2 views
0

У меня есть проект, который создает несколько JFrames и показывает их как отдельные окна. Это может быть довольно запутанным, поэтому я хочу собрать все эти фреймы в родительском окне.Может ли JFrames быть помещен в родительское окно?

Я знаю концепцию JInternalFrame, которая, безусловно, будет работать в принципе, но проект довольно большой, а JFrames довольно сложный, поэтому преобразование их индивидуально в JInternalFrame кажется более или менее неосуществимым для меня (особенно из-за JInternalFrame немного по-другому, в некоторых отношениях, таких как события мыши).

Есть ли способ взять сами JFrames и поместить их в родительское окно? (Или есть другое решение, о котором я не думаю?)

+1

Просто возьмите их [* contentPanes *] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#getContentPane%28%29) и добавьте их в родительский JFrame. Это должно быть намного проще. – Tom

+0

Вы имеете в виду иметь несколько contentPanes в одном JFrame? Это даже работает? –

+0

«Контентная панель» JFrame - это обычная «JPanel», и да, вы можете иметь несколько панелей на JFrame (на собственной контентной панели). – Tom

ответ

1

Короткий ответ: нет. Вот почему мы обычно препятствуем распространению непосредственно от JFrame (или контейнеров верхнего уровня). Вам нужно попробовать переместить содержимое из JFrame примерно на JPanel. Это позволит вам принимать более правильные решения о том, как представить контент.

Самое простое решение состоит в том, чтобы пройти через ваш код и заменить extends JFrame на extends JPanel и исправить ошибки, которые он производит. Вы также можете добавить метод static, который обертывает экземпляр контейнера в JFrame, если он вам понадобится.

+0

Хорошо, я попробую. (Вот где наследие укусит тебя в задницу ... ;-)) Но что мне делать с JPanels? (Честно говоря, я не очень хорош в программировании графического интерфейса.) –

+0

Как насчет детских форм? – Soley

+2

Вы просто добавляете их в какой-либо контейнер, который хотите, как и другие 'JPanel' или' JInternalFrame' или 'JTabbedPane', или используйте их в' CardLayout' или даже добавляете их в 'JFrame' или' JDialog' по мере необходимости – MadProgrammer

Смежные вопросы