/ / Java Swing: не може да разпространи компоненти в цял JPanel с GridBagLayout - java, swing, jpanel, layout-manager, gridbaglayout

Java Swing: не може да разпространява компоненти в цял JPanel с GridBagLayout - java, swing, jpanel, layout-manager, gridbaglayout

Опитвам се да внедря прост 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, на етикетите във втората колона, направете втората колона да заема относително много повече пространство от първата. Ще получите по-малко място между колоните и още в крайната дясна част на панела.