Java GUI GridBagLayout, как разместить три поля со списком в одном столбце? - PullRequest
1 голос
/ 19 марта 2020

Я использую Eclipse, программирую на Java, использую менеджер макетов GridBagLayout для школьного проекта.

Пока все выглядит так

enter image description here

Я хочу поместить три поля со списком (ММ, ДД, ГГГГ) в один столбец (в соответствии с accNoT и другими), но я не знаю, как я пытался возиться с WeightX или Weighty, но я не делаю что-нибудь

Вот код этой части

c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 0;
c.ipadx = 50;
pane.add(accNoT, c);

c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 1;
pane.add(cellNoT, c);



c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0.3;
c.gridx = 1;
c.gridy = 2;
pane.add(monthBox, c);

c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0.3;

c.gridx = 2;
c.gridy = 2;
pane.add(dayBox, c);

c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0.3;
c.gridx = 3;
c.gridy = 2;
pane.add(yearBox, c);

c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 3;
pane.add(planList, c);

Я добавил немного текста на изображение, чтобы он не был немного запутанным пс. Я слежу за https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html Я только что изменил их пример

Пока что я делал, кроме попытки выяснить weightx и y, которые до сих пор я не понимаю, я поставил DD и поле со списком YYYY в другом столбце. Затем я установил для gridWidth значение accNoT, равное 2, но это не сработало, DD просто исчез

1 Ответ

1 голос
/ 19 марта 2020

ОТВЕТИЛ, ОГРОМНОЕ СПАСИБО user85421 /////////////////////////////

Так же, как user85421 сказал в комментарии, добавьте gridwidth, три поля со списком должны быть 1, тогда остальные должны быть 3

Код

  c.fill = GridBagConstraints.HORIZONTAL;

//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 0;
c.ipadx = 50;
c.gridwidth = 3;
pane.add(accNoT, c);

c.fill = GridBagConstraints.HORIZONTAL;

//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 1;
c.gridwidth = 3;

pane.add(cellNoT, c);



c.fill = GridBagConstraints.HORIZONTAL;


c.gridx = 1;
c.gridy = 2;
c.gridwidth = 1;

pane.add(monthBox, c);

c.fill = GridBagConstraints.HORIZONTAL;

//c.weighty = 0.3;

c.gridx = 2;
c.gridy = 2;
c.gridwidth = 1;
pane.add(dayBox, c);

c.fill = GridBagConstraints.HORIZONTAL;

//c.weighty = 0.3;
c.gridx = 3;
c.gridy = 2;
c.gridwidth = 1;
pane.add(yearBox, c);

c.fill = GridBagConstraints.HORIZONTAL;

//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 3;
c.gridwidth = 3;
pane.add(planList, c);

c.fill = GridBagConstraints.HORIZONTAL;

//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 4;
c.gridwidth = 3;
pane.add(adjT, c);

c.fill = GridBagConstraints.HORIZONTAL;

//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 5;
c.gridwidth = 3;
pane.add(eUsageT, c);

c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 6;
c.gridwidth = 3;
pane.add(prevBAT, c);

////THIRD COLUMN//////////////////////////////////////////
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 4;
c.gridy = 1;
c.gridwidth = 3;
pane.add(monPLR, c);

Результат

enter image description here

Да, это выглядит отвратительно, но по крайней мере три поля со списком помещаются в столбце

Вы можете заметить в разделе «Третий столбец». Gridy = 4 Это потому, что сетка поля со списком YYYY = 3

Еще раз спасибо пользователю user85421 за спасение жизни нашей группы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...