我仍在努力学习布局管理器的工作原理。我创建了一个带有两个 JPanels 的框架。
第一个包含一个 boxLayout 的 textArea。
第二个包含一个按钮的流式布局。
我根据需要设置了每个面板的 preferredSize,然后打包它们,但结果出乎意料。
无论我做什么,如果我使用网格布局,它似乎总是将可用空间的一半分配给每个控件。有人告诉我:
每行的高度取决于添加在每行中的每个组件的高度。
按钮面板的高度为20。 它为其分配了更多空间:
这段代码有什么问题?
请保留两个JPanels不变。直接将文本框和按钮添加到框架很容易,但我需要使用JPanels(因为我将添加边框和其他内容)。
我根据需要设置了每个面板的 preferredSize,然后打包它们,但结果出乎意料。
import java.awt.*;
import javax.swing.*;
public class LayoutMgrTest
{
public static void main(String[] args)
{
TableBasic frame = new TableBasic();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.setVisible(true);
frame.getContentPane().setLayout(new GridLayout(2,1));
JPanel controlPane = new JPanel();
JPanel buttonPane = new JPanel();
controlPane.setLayout(new BoxLayout(controlPane, BoxLayout.PAGE_AXIS));
controlPane.setPreferredSize(new Dimension(200, 200));
controlPane.add(new JScrollPane(new JTextArea()));
buttonPane.setLayout(new FlowLayout(FlowLayout.LEFT));
buttonPane.setPreferredSize(new Dimension(100,20));
buttonPane.add(new JButton("Button1"));
buttonPane.add(new JButton("Button2"));
frame.getContentPane().add(controlPane, BorderLayout.NORTH);
frame.getContentPane().add(buttonPane, BorderLayout.SOUTH);
frame.setSize(new Dimension(500,500));
frame.pack();
}
}
无论我做什么,如果我使用网格布局,它似乎总是将可用空间的一半分配给每个控件。有人告诉我:
每行的高度取决于添加在每行中的每个组件的高度。
按钮面板的高度为20。 它为其分配了更多空间:
这段代码有什么问题?
请保留两个JPanels不变。直接将文本框和按钮添加到框架很容易,但我需要使用JPanels(因为我将添加边框和其他内容)。