2011-04-13 2 views
4

Неужели GridLayout не соблюдает количество строк и столбцов, которые вы указали, если вы не заполните его полностью?GridLayout и количество строк и столбцов

Я создаю GridLayout с 3 строками и 4 столбцами. Однако я добавляю только 9 компонентов. В результате он показывает мне эти 9 компонентов в сетке 3x3, а не сетку 3x4 (только с одним компонентом в третьей строке (и двумя пробелами)).

ответ

4

Просто заполнить пустые ячейки с пустыми элементов (например, в JLabel), например:

class MyFrame extends JFrame 
{ 
    MyFrame() 
    { 
     setLayout(new GridLayout(3,4)); 

     for (int i = 0; i < 9; ++i) 
      this.getContentPane().add(new JLabel(""+i)); 
     for (int i = 0; i < 3; ++i) 
      getContentPane().add(new JLabel()); 

     pack(); 
     setVisible(true); 
    } 
} 

Это макеты их

0 1 2 3 
4 5 6 7 
9  
+1

-1, хотя решение работает, это скорее хак и не демонстрирует понимания API. Кроме того, если вам действительно нужна пустая ячейка, то, вероятно, лучше использовать один из компонентов Box (клей, стойка), которые не имеют специальной логики рисования и просто предназначены для заполнения пространства. – camickr

+0

Я не понимаю вашу точку зрения. Мой ответ объясняет внутренности API-интерфейса GridLayout. Его цель - предоставить способ отображения одинаковой сетки объектов, а пустой 'JLabel' совершенно легален, я не понимаю, почему это должно быть взломом .. из документации: _The GridLayout class - это менеджер компоновки, который выкладывает компоненты контейнера в прямоугольной сетке. Поэтому он должен работать с элементами 'row * col'. – Jack

+0

Вы прочитали мой ответ? API позволяет вам указать сетку с четырьмя столбцами. Если вводятся как строка, так и столбец, столбцы игнорируются. Его взломать из-за создания «пустых предметов» для достижения желаемого результата. Если GridLayout было объявлено правильно, не было бы необходимости в этих пустых элементах. – camickr

28

, а не 3х4 (только один компонент на третий ряд (и две пробелы)).

Затем вы должны создать свой GridLayout с помощью:

Это сказать макет, который вы не знаете, сколько строк у вас есть, но вы хотите 4 колонки. Таким образом, столбцы будут заполнены до перехода к следующей строке.

Нет необходимости в пустых компонентах.

Смежные вопросы