Я намагаюся втілити простий JDialog кудиверхній JPanel має GridBagLayout, який складається з 5 пар JLabels: з кожної пари, перший JLabel діє як заголовок, а другий містить дані, отримані від виклику веб-служби. Ось приклад:
Як бачите, це вікно занадто "порожнє" сзанадто багато місця. Перш за все я не можу зрозуміти, чому верхня панель настільки більша, ніж друга. Фактично, JPanel із заголовком "Risultato" також має GridBagLayout, тоді як перша панель знаходиться у колонці 0 та рядку 0, друга панель - у колонці 0 та рядку 1.
Потім для кожного JLabel я називаю такі методи: setMinimumSize (новий вимір (231, 25)) setPreferredSize (новий вимір (231, 25)) setMaximumSize (новий вимір (231, 25))
Більше того, я встановлюю якіри для кожного GridBagConstraints, пов'язаного з кожним JLabel, як:
GridBagConstraints.FIRST_LINE_START
для червоного;GridBagConstraints.CENTER
для зеленого;GridBagConstraints.LINE_START
для апельсина;GridBagConstraints.LINE_END
для жовтого;GridBagConstraints.LAST_LINE_START
для синього;GridBagConstraints.LAST_LINE_END
для білого;
Нарешті я також дзвоню setWeightX(1.0);
за кожне обмеження. Я не знаю, чому ефект такий, і чому так багато порожнього місця перед і після всіх JLabels. Чи є спосіб це виправити? Так що верхня панель адаптується до всього її компонента? Я не можу писати жодного коду Java, оскільки моя команда розробників змушена використовувати дивні внутрішні рамки, де ми будуємо макет, записуючи XML-файл, де кожен тег є контейнером або компонентом з правильним ступенем вкладеності, а потім, API Reflection, справжній Класи та методи Java інстанціюються та називаються. У будь-якому випадку механізм повинен бути однаковим.
UPDATE
Велике спасибі Кевіну Андерсону та мені вдалося покращити макет JDialog значно. Більше того, я зателефонував setWeightY(0.0)
за GridBagConstraints
на контейнері верхньої панелі, щоб він також не став занадто великим, і він змінив розмір компонентів, що містяться в ньому.
Відповіді:
1 для відповіді № 1Ваші мітки у двох стовпцях, і всі вони єрівний weightX, тому GridBagLayout виділяє приблизно однакову ширину обом стовпцям. Але якщо ви надаєте більшу вагуX, скажімо, 10,0, міткам у другому стовпчику, змусьте другий стовпчик зайняти порівняно набагато більше місця, ніж перший. Ви отримаєте менше місця між стовпцями та більше в крайній правій частині панелі.