Компоненты перекрываются при использовании GridBagLayout

при размещении своих JLabels я обнаружил проблему, которую до сих пор не мог решить. JLabels перекрывались.

Это фрагмент кода, относящийся к gridbaglayout:

   c = new GridBagConstraints();

   c.gridx = 0;
   c.gridy = 0;
   c.gridwidth = 3;
   c.fill = GridBagConstraints.HORIZONTAL;
   c.ipady = 20;
   c.weightx = 3;
   c.weighty = 1;
   c.insets = new Insets(0,5,5,5);

   all.add(header, c);

   c.gridx = 0;
   c.gridy = 1;
   c.weightx = 2;
   c.weighty = 4;
   c.insets = new Insets(5,5,5,5);

   all.add(sts, c); //this label overlapped

   c.gridx = 1;
   c.gridy = 1;
   c.weightx = 1;
   c.weighty = 5;
   c.insets = new Insets(5,5,5,5);

   all.add(cl, c); //this label overlapped

заранее спасибо


person beur_x    schedule 03.04.2013    source источник
comment
еще раз, чтобы лучше помочь, скорее опубликуйте SSCCE, короткий исполняемый, компилируемый, почти утренний выпуск,   -  person mKorbel    schedule 03.04.2013


Ответы (1)


Ширина сетки, равная 3, означает, что компонент будет занимать 3 места по сетке x. Пожалуйста, прочтите руководство по компоновке пакетов с сеткой http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

У вас есть первый компонент в x0, это расширит 3 столбца до x2, поэтому следующее местоположение сетки avail будет x3

person Adrian    schedule 03.04.2013