0

我正在尝试制作一个具有 4 个正方形的布局,这些正方形构成一个更大的正方形,下方的一个按钮延伸到整个正方形。

我尝试GridLayout了完美创建正方形的位置,但按钮没有在屏幕上伸展。

我也试过GridBagLayout,但有间距,而且广场很小,很糟糕。

PS:按钮是button1,button2,button3,button4,用于方形,start为底部按钮。

我也希望正方形是 400x400。

我的代码GridLayout

this.setLayout(new GridLayout(3,2));




        button1 = new JButton();
        //button1.setBackground(Color.green);
        button1.setBounds(0, 0, 200, 200);

        button2 = new JButton();
        //button2.setBounds(0, 200, 200, 200);
        button2.setBackground(Color.red);

        button3 = new JButton();
        //button3.setBackground(Color.yellow);
        button3.setBounds(200, 0, 200, 200);

        button4 = new JButton();
        //button4.setBounds(200, 200, 200, 200);
        button4.setBackground(Color.blue);

        start = new JButton("Start");
        //start.setBounds(300, 300, 100, 100);

        this.add(button1);
        this.add(button2);
        this.add(button3);
        this.add(button4);
        this.add(start);
4

2 回答 2

2

尝试使用组件布局...BorderLayout和的组合GridLayout应该会给你你需要的结果。

在此处输入图像描述

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class FourSquare {

    public static void main(String[] args) {
        new FourSquare();
    }

    public FourSquare() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JPanel squarePane = new JPanel(new GridLayout(2, 2));
                JPanel controlPane = new JPanel(new BorderLayout());

                squarePane.add(new JButton("1"));
                squarePane.add(new JButton("2"));
                squarePane.add(new JButton("3"));
                squarePane.add(new JButton("4"));

                controlPane.add(squarePane);
                controlPane.add(new JButton("Bottom"), BorderLayout.SOUTH);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(controlPane);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}
于 2013-08-07T02:49:52.547 回答
1

我还不能作为评论提出问题,但我猜你想要一个由四个使用 gridlayout 的按钮组成的正方形,然后在其下方延伸一个更长的按钮?

(像这样?)

[1] [2]
[3] [4]
[开始]

对我来说,我会这样做:

//assuming this code is in a class that extends JFrame
this.setLayout( new BorderLayout() );

JPanel pnlSquare = new JPanel( new GridLayout( 2 , 2 ) );
button1.setPreferredSize( new Dimension( 200 , 200 ) );
pnlSquare.add( button1 );
button2.setPreferredSize( new Dimension( 200 , 200 ) );
pnlSquare.add( button2 );
button3.setPreferredSize( new Dimension( 200 , 200 ) );
pnlSquare.add( button3 );
button4.setPreferredSize( new Dimension( 200 , 200 ) );
pnlSquare.add( button4 );
this.add( pnlSquare , BorderLayout.CENTER );

this.add( start , BorderLayout.SOUTH );

让我知道这是否可以。

另外,如果这是一个学校项目,你最好确保你能解释代码,否则你可能会因为抄袭而惹上麻烦。

于 2013-08-07T02:49:11.247 回答