我正在尝试在JFrame上放置5个按钮。第一行应该有四个按钮,第二行应该是第五个按钮。但是这里所有的按钮都显示在一行中,而第五个按钮的一半不在面板中。顺便说一下,如果我使用frame.pack();我的镜框变得比我预期的要小。我不想更改框架的大小。我想在第二行中找到第五个。

import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;


public class test {

    public static void main(String[] args) {


        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 529, 300);
        frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));


        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));


        JButton btnNewButton_4 = new JButton("New button");
        panel.add(btnNewButton_4);

        JButton btnNewButton_3 = new JButton("New button");
        panel.add(btnNewButton_3);

        JButton btnNewButton = new JButton("New button");
        panel.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("New button");
        panel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("New button");
        panel.add(btnNewButton_2);


        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    }

}

最佳答案

第一行应有四个按钮,第五个应位于
  第二行。



Oracle教程中有关How to use Layout Managers的标准和预订示例
对JPanel使用GridLayout (two rows),但所有JButton的尺寸均相同
使用GridBagLayout,那么每个JButton的大小都不同
不可见的JComponents或空的JLabel可以帮助您进行最复杂的变化

10-07 16:11