我试图用Java摇摆做一个简单的ui游戏。这是我的目标布局设计:(所有面板都有相同的宽度,请原谅我的图纸)
我需要3个小高度面板和1个大面板
我使用GridLayout
和4x1。我在第一个面板上添加了一些按钮。
mainFrame = new JFrame("Basket Game");
mainFrame.setLayout(new GridLayout(4, 1));
options = new JPanel();
options.setLayout(new FlowLayout());
options.setBorder( new TitledBorder("Options Menu") );
options.add(settings);
options.add(start);
options.add(pause);
options.add(reset);
options.add(exit);
mainFrame.add(options);
但它使第一个面板太大了。
如何设置这些面板的尺寸,或者我应该使用不同的布局图案。
答案 0 :(得分:3)
使用GridLayout
时,网格中的所有单元格都具有相同的大小,这就是您的面板占总高度的1/4的原因。
您可以考虑使用垂直BoxLayout
:
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
// add the panels to mainPanel, then
mainFrame.setContentPane(mainPanel);
以下是一个示例,其中三个面板各包含一个按钮,另一个面板具有更大的尺寸:
JFrame frame = new JFrame();
JPanel p1 = new JPanel();
p1.add(new JButton("11111"));
JPanel p2 = new JPanel();
p2.add(new JButton("222222"));
JPanel p3 = new JPanel();
p3.add(new JButton("3333"));
JPanel p4 = new JPanel();
p4.setPreferredSize(new Dimension(50, 400));
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
mainPanel.add(p1);
mainPanel.add(p2);
mainPanel.add(p3);
mainPanel.add(p4);
frame.setContentPane(mainPanel);
frame.pack();
frame.setVisible(true);