OfficeBean не будет отображаться после перемещения содержащей Swing Panel из одного контейнера в другой - PullRequest
2 голосов
/ 23 июня 2010

Я разрабатываю апплет Java 6, который позволяет пользователям просматривать документы OO (v.3.2) (только для чтения), и, если они выбирают, нажмите кнопку, которая запускает новое окно JDialog, с документом, отображаемым в нем, который позволяет пользователю отмечать и редактировать его по своему усмотрению. После этого они могут закрыть JDialog, который сохраняет документ на сервере и повторно отображает обновленный документ (снова только для чтения) в исходном окне апплета

Я догадался, что смогу сделать это с одним экземпляром OfficeBean, встроенным в Swing Panel. Тем не менее, я не могу успешно переместить мою панель (содержащую OfficeBean) из апплета в JDialog, когда нажата кнопка «Редактировать». Все, что я получаю, это пустое место в JDialog, где должен находиться документ. Я не получаю ошибок.

В настоящее время мне удалось обойти это, создавая новые экземпляры OfficeBean каждый раз, когда мне нужно отобразить документ (один раз, когда апплет загружен, снова, когда пользователь выбирает редактирование, и он открывается в JDialog, и наконец, когда они нажимают кнопку «Сохранить» в диалоговом окне, и отредактированный результат снова отображается в апплете.) Однако это означает три поездки на сервер и с сервера, откуда поступают документы. Это кажется мне безумным.

Я ни в коем случае не эксперт по Swing и вполне могу допустить глупую ошибку. Тем не менее, я много возился, отлаживал и гуглял и не могу заставить это работать. Может ли кто-нибудь помочь мне в этом? Я пытаюсь сделать что-то, что принципиально невозможно? Я надеюсь, что нет.

1 Ответ

1 голос
/ 23 июня 2010

Одно из правил в Swing состоит в том, что компонент может отображаться / прикрепляться только к одной части "дерева" интерфейса одновременно. Когда вы «перемещаете» свой компонент в диалоговое окно, вы сначала удаляете его из апплета?

...