Я создаю GUI, используя GridLayout, чтобы упорядочить несколько панелей, использующих FlowLayout. Я использую пакет, чтобы определить размер кадра. Если у меня есть только TextArea, то он имеет размеры правильно. Если у меня есть только другие компоненты, это правильно размеры. Но если я использую оба кода p1 и p2 в коде ниже, панель с кнопками не имеет нужного размера. Я использую тестовый код ниже. Если я использую только p1 или p2, это правильно, но не с обоими размерами: вот изображение, которое я получаю. Я не хочу все это дополнительное пространство между кнопками и текстовой областью. Если я делаю только одну текстовую область, она имеет размеры правильно:
public class GUIPractice extends JFrame
{
//declare GUI objects
JPanel panel;
JPanel p1, p2;
JButton btnAdd, btnShow;
JScrollPane js;
JTextArea taOutput;
//constructor
public GUIPractice()
{
//give frame a title
setTitle("GUI Practice");
panel =new JPanel(new GridLayout(0, 1));
btnAdd = new JButton("Add");
btnShow = new JButton("Show");
taOutput = new JTextArea(10, 20);
js = new JScrollPane(taOutput, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
p1 = new JPanel();
p1.add(btnAdd);
p1.add(btnShow);
p2 = new JPanel();
p2.add(js);
panel.add(p1);
panel.add(p2);
//add the panel to the frame
add(panel);
}
public static void main(String[] args)
{
GUIPractice frame = new GUIPractice();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}