调整网格布局面板的大小
Resizing the panels on gridlayout
我正在尝试用 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);
但这会使第一个面板太大。
如何设置这些面板的大小,或者我应该使用不同的布局模式。
使用 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);
我正在尝试用 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);
但这会使第一个面板太大。
如何设置这些面板的大小,或者我应该使用不同的布局模式。
使用 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);