2013-04-28 3 views
0

Я пытаюсь составить список строк с метками в столбцах. Я пытаюсь использовать gridbaglayout, но у меня проблема. Когда я расширяю окно, оно не расширяется. Это то, что происходит: enter image description hereПанель GridBag не занимает все пространство

Что я действительно хочу, так это, чтобы ячейка в макете занимала 1/5 пространства, а метки смещались влево большую часть ячейки.

public static JPanel createLayout(int rows) { 
    JPanel product = new JPanel(new GridBagLayout()); 
    String[] lables = {"School", "Advanced #", "Novice #"}; 
    double weight = 1/(lables.length); 
    for (int i = 0; i < rows; i++) { 
     GridBagConstraints c = new GridBagConstraints(); 
     c.insets = new Insets(3, 3, 3, 3); 
     c.anchor = GridBagConstraints.WEST; 
     c.gridx = i; 
     c.weightx = weight; 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.anchor = GridBagConstraints.NORTHWEST; 
     for (int j = 0; j < lables.length; j++) { 

      JLabel l = new JLabel(lables[j]); 
      product.add(l, c); 
     } 
    } 
    return product; 
} 

public static void main(String[] args) throws IOException { 
    JFrame frame = new JFrame("Debate Calculator"); 
    JPanel debates = new JPanel(); 
    frame.add(createLayout(5), BorderLayout.CENTER); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
+1

Используйте JTable ... – MadProgrammer

ответ

2

Я считаю, что проблема связана с расчетом веса ...

double weight = 1/(lables.length); 

Поскольку 1 и lables.length оба Int значения, Java автоматически преобразовывать результат к int (который 0).

Вместо этого, попробовать что-то вроде ...

double weight = 1d/(double)lables.length; 
+0

Спасибо! Просто вопрос: когда я установил ancor равным GridBagConstraints.CENTER и применил его к метке, это не сработает. Как еще можно центрировать ярлык в ячейке? –

+0

Это будет зависеть от свойства 'fill'' GridBagConstraint', если это 'HORIZONTAL' или' BOTH', тогда метка, в которой это будет нужно, будет установлена ​​в горизонтальном положении с помощью 'JLabel # setHorizontalAlignment (JLabel.CENTER) ', вы также смотрите на' 'JLabel # setVerticalAlignment' – MadProgrammer

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