2013-05-11 3 views
2

При создании графического интерфейса MDI Swing у меня есть несколько JInternalFrames, которые добавляются в JDesktopPane в JFrame. Я делаю эти внутренние кадры невидимыми, добавляя setVisible (false) в конструкторе после метода initComponents (поскольку построитель GUI автоматически устанавливает эти рамки в этот метод).Управление JInternalFrames в Swing MDI

Во время выполнения пользователь может открыть и закрыть JInternalFrames, вызвав прослушиватели, которые вызывают setVisible (true) и setVisible (false), в зависимости от текущего состояния кадров. Мне нравится, как предыдущая позиция и состояние внутреннего фрейма остаются неповрежденными с использованием этого дизайна. Однако, что-то говорит мне, что это должно быть ужасно неправильно, хотя я еще не видел никаких недостатков.

Итак, мой вопрос: этот плохой дизайн?

+1

Во всяком случае, я думаю, что лучший дизайн - запомнить позиции JInternalFrames. Один из недостатков заключается в том, что если пользователь изменил размер JDesktopPane, JInternalFrame может быть полностью вне поля зрения (то есть за пределами видимых границ JDesktopPane), поэтому вы можете проверить это, когда видишь JInternalFrame. Или вы можете сделать простой выход, как это сделал Windows 3.1, и предоставить функции меню «tile» и «cascade». – VGR

ответ

1

В контексте Multiple Document Interface (MDI) этот подход является вполне разумным. Кроме того, вы можете использовать метод JInternalFramesetSelected(), чтобы выделить конкретный кадр. Для упрощения навигации этот и другие методы могут быть использованы в Action, как показано на рисунке here.