3

我正在创建一个雷区游戏。我需要在网格下方自己单独的 JPanel 中添加两个按钮 Clear 和 Done,但无法弄清楚如何操作。下面是游戏网格的代码。谢谢!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MineField extends JPanel implements ActionListener{

    public static void main(String[] args) {
        MineField g = new MineField();
        JFrame frame = new JFrame("Mine Field");
        frame.add(g);
        frame.setSize(400,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    private JButton squares[][];

    public MineField(){
        this.setSize(400,400);
        this.setLayout(new GridLayout(5,5));
        squares = new JButton[5][5];
        buildButtons();
    }

    int [][] num = new int [5][5];

    private void buildButtons(){
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                squares[i][j] = new JButton();
                squares[i][j].setSize(400,400);
                this.add(squares[i][j]);
            }
        }
    }

    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }

}
4

3 回答 3

7

默认情况下,JFrame 使用 BorderLayout。

因此,目前您的 MineField 类已添加到边框布局的 CENTER 中。

如果您想要框架上的另一个面板,您可以使用:

JPanel south = new JPanel();
south.add(clearButton);
south.add(doneButton);
frame.add(south, BorderLayout.SOUTH);

阅读 Swing 教程中有关如何使用 BorderLayout的部分以获取更多信息和示例,以更好地了解布局管理器的工作原理。

于 2013-11-11T21:32:22.307 回答
0

.add()我们可以使用该方法将组件相互添加。

两种实际用法是:

mainPanel.add(topPanel); //panel to panel

或者正如 Quincunx 所说

JFrame.add(Component c); //component to jframe
于 2013-11-11T21:32:33.697 回答
0

你应该稍微修改你的代码,你可以添加那几行:

JPanel thePanel = (JPanel)frame.getContentPane(); // this variable will manage the JFrame content

thePanel.setLayout(new BorderLayout()); // BorderLayout to seperat the Frame on 5 section Center, North, South, Est, West

JPanel btnPanel = new JPanel(new FlowLayout(FlowLayout.Right)); // this JPanel made to contain the buttons
btnPanel.add(clearBtn);
btnPanel.add(doneBtn);

thePanel.add(g, BorderLayout.CENTER);
thePanel.add(btnPanel, BorderLayout.SOUTH);

希望有帮助,萨拉姆

于 2013-11-11T21:44:52.907 回答