Опитвам се да внедря прост 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 файл, където всеки маркер е контейнер или компонент със съответната степен на гнездене и след това от Reflection API Java класовете и методите се инстанциират и се извикват. Както и да е, механизмът трябва да бъде същият.
UPDATE
Много благодаря на Кевин Андерсън и аз успяхме да подобрим оформлението на JDialog значително. Освен това се обадих setWeightY(0.0)
за GridBagConstraints
на горния панелен контейнер, така че да не стане прекалено голям и да се преоразмерява до съдържащите го компоненти.
Отговори:
1 за отговор № 1Етикетите ви са в две колони и всички те иматравно weightX, така че GridBagLayout разпределя приблизително еднаква ширина и на двете колони. Но ако дадете по-голямо weightX, да речем 10.0, на етикетите във втората колона, направете втората колона да заема относително много повече пространство от първата. Ще получите по-малко място между колоните и още в крайната дясна част на панела.