2013-04-07 3 views
0

Я делаю простой интерфейс в Java. Я хочу иметь на вершине JButton с установленным размером 200 * 20 и непосредственно под ним JScrollPane, инкапсулирующую JTextArea. Размер этого поля должен быть оставшейся шириной и высотой JPanel, в котором он размещен (но с минимальным разрешением 640 * 480), и должен изменять размер при увеличении/уменьшении окна (до его минимального размера).Неверный размер компонентов в GridBagLayout

Я попытался сделать это с помощью GridBagLayout, но это, похоже, не работает. Кто-нибудь знает, как я могу это исправить?

//Initialize components 
    Dimension minSize = new Dimension(640, 480); 
    info = new JTextArea("hello"); 
    info.setEditable(false); 
    JScrollPane scrollPane = new JScrollPane(info); 
    scrollPane.setMinimumSize(minSize); 
    JButton update = new JButton("update"); 
    JPanel jp = new JPanel(); 
    jp.setLayout(new GridBagLayout()); 
    GridBagConstraints grid = new GridBagConstraints(); 

    //add components 
    grid.fill = GridBagConstraints.NONE; 
    grid.anchor = GridBagConstraints.NORTHWEST; 
    grid.gridheight = 1; 
    grid.gridwidth = 1; 
    grid.weighty = 1.0; 
    grid.weightx = 1.0; 
    grid.gridx = 0; 
    grid.gridy = 0; 

    jp.add(update, grid); 

    grid.fill = GridBagConstraints.BOTH; 
    grid.gridx = 0; 
    grid.gridy = 1; 
    grid.weighty = 15; 
    grid.gridheight = 15; 
    grid.gridwidth = 15; 

    jp.add(scrollPane, grid); 

    this.add(jp,BorderLayout.NORTH); 

Вот как это выглядит сейчас: enter image description here как я описал, прежде чем это не то, что я хочу; TextArea необходимо заполнить весь экран (чтобы он был выше).

Как я могу это сделать?

ответ

3

this.add(jp, BorderLayout.CENTER);

Как указано in the documentation:

Компоненты раскладывают в соответствии с их предпочтительных размеров и ограничений размера контейнера. Компоненты NORTH и SOUTH могут быть растянуты горизонтально; компоненты EAST и WEST могут быть , вытянутые вертикально; компонент CENTER может растягивать как горизонтально, так и вертикально, чтобы заполнить любое оставшееся пространство.

+0

Спасибо! Это трюк :) Почему это работает? –

+0

Документация, вставленная, чтобы объяснить, как она работает. – Aubin

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