У меня есть настройки графического интерфейса пользователя, который выглядит следующим образом:GUI здания Проблема
Он отображает документ и позволяет пользователю редактировать его путем добавления/удаления JTextAreas
и текст в них.
У меня возникли проблемы при попытке открыть документ. Сам документ состоит из слоев JPanels
друг над другом. В одной точке графического интерфейса не более 6 слоев JPanels
.
Поскольку я не знаю, какова будет высота JTextArea
, я должен сделать ее относительно родителя (другими словами, не указывать ее).
Поскольку диспетчер компоновки (MigLayout
) не знает точный размер компонента (это относительно родителя), он сначала запрашивает у своего родителя размер родителя. Этот размер снова неизвестен, и родительский родитель задан и так далее (до уровня 1 или 2 JPanel). В конце концов, он должен задать много компонентов для своего размера (метод checkParent(Container)
в MigLayout был вызван более 100 000 раз только для примера выше).
Что мне нужно сделать, это установить высоту JTextArea
(или JPanel
, что он находится в) только тогда, когда открывается документ, поэтому менеджер макет не должен спросить JTextAreas
родителей, в результате чего рекурсивный ад ,
После открытия документа мне необходимо сбросить высоту до значения по умолчанию (поэтому высота настраивается при добавлении/удалении текста).
У меня нет абсолютного представления о том, как это сделать, или если это путь, я уверен, что описанная выше вещь является проблемой.
Несколько нот:
- это не
MigLayout
ошибка, я был на форуме (ссылка ниже) - check this out (the last post)
- Я не могу поставить
JScrollPane
вJTextArea
своей задачей не только хранить информацию, но и точно отображать, сколько места она занимает - Я могу легко получить высоту
JTextAreas
при сохранении документа, тем самым имея их в моем распоряжении, когда openin г он снова
EDIT: Документ ссылается на этом вопросе не является «документом» в качестве штуковины, используемой в JTextAreas и похож, но «документ», как и в пользовательском классе в моей программе (я Жду» так как это не имеет значения, если только это не понимается как «документ»).
Мне нужно, чтобы моя программа была такой же, как и на прилагаемом рисунке, так что это не будет работать ... – Karlovsky120
Извините, я не знаю о существующем представлении «Документ», которое появляется ближе. – trashgod
Я не обязательно ищу альтернативный вид, насколько я ищу решение проблемы с рекурсивным изменением GUI ... – Karlovsky120