我仍在试图了解布局管理器是如何工作的。我用两个JPanel做了一个Frame。 第一个包含带boxLayout的textArea。 第二个包含一个带按钮的流布局。布局管理器preferredSize Java
我相应地设置每个面板的首选大小,打包它们,但得到意想不到的结果。
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();
}
}
无论我做什么,如果我使用网格布局,它似乎永远分配的可用空间的一半每个控制。我被告知:
每行的高度取决于每行添加的每个组件的高度 。
的buttonpane的高度为20。它的分配比它更:
有什么不对的代码?
我想离开这两个JPanels完整请。将文本框和按钮直接添加到框架很容易,但我需要使用JPanels(因为我将添加边框和其他东西)。
@mKorbel - 谢谢。我的做法总是尽可能少地改变,但是你认为我更好:) – MByD
快手男,欢迎您 – mKorbel
感谢您的回答。这段时间有点晚了mKorbel:P你通常总是对Swing GUI有很大的帮助:) – David