2015-08-05 2 views
0
public Panel(){ 
     setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 

    c.insets = new Insets(10,10,10,10); 

    c.gridx = 0; 
    c.gridy = 0; 

    add(l1 , c); 

    c.gridx = 1; 
    c.gridy = 0; 

    add(tf1 , c); 

    c.gridx = 0; 
    c.gridy = 1; 

    add(l2 , c); 

    c.gridx = 1; 
    c.gridy = 1; 

    add(tf2 , c); 
} 

Это то, что она в настоящее время выглядит следующим образом: enter image description hereКак получить JLabels и JTextAreas для выравнивания в верхней левой части экрана, а не в центре

Как выровнять содержимое в левом верхнем углу?

ответ

1

Используйте анкеры, они являются частью класса GridBagConstraints, и они используются, чтобы сказать Java, где все компоненты идут. Так, например, если вы хотите, чтобы они появились в левом верхнем углу вы просто использовать:

c.anchor = GridBagConstraints.LINE_START; 

Вы также можете использовать

c.anchor = GridBagConstraints.NORTHWEST; 

Altough мне больше нравится первый. Вы можете прочитать об этом подробнее и просмотреть все доступные опции here в документации Oracle.

Еще одна вещь, якоря не будут работать, если вы не придадите значения весомым. Если вы не присваиваете значение, так как Java говорит, что все компоненты будут сжиматься вместе по центру. Весовые значения могут принимать значения от 0 до 1. Например:

c.weighty = 0.5; 
0

Попробуйте добавить следующую строку после c декларации:

c.anchor = GridBagConstraints.NORTHWEST; 
0

Используйте JPanel ниже, как это:

add(new JPanel(), new GridBagConstraints(0,2,2,1,1.0,1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(2,2,2,2),1,1));