Я делаю простой интерфейс в 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);
Вот как это выглядит сейчас: как я описал, прежде чем это не то, что я хочу; TextArea необходимо заполнить весь экран (чтобы он был выше).
Как я могу это сделать?
Спасибо! Это трюк :) Почему это работает? –
Документация, вставленная, чтобы объяснить, как она работает. – Aubin