我正在创建雷区游戏。我需要在网格下面的单独的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
}
}
答案 0 :(得分:7)
默认情况下,JFrame使用BorderLayout。
所以目前你的MineField类被添加到边框布局的CENTER中。
如果你想在框架上使用另一个面板,你可以使用:
JPanel south = new JPanel();
south.add(clearButton);
south.add(doneButton);
frame.add(south, BorderLayout.SOUTH);
阅读How to Use BorderLayout上Swing教程中的部分,了解更多信息和示例,以便更好地了解布局管理器的工作方式。
答案 1 :(得分:0)
我们可以使用.add()
方法相互添加组件。
这方面的两个实际用法是:
mainPanel.add(topPanel); //panel to panel
或正如Quincunx所说
JFrame.add(Component c); //component to jframe
答案 2 :(得分:-1)
您应该稍微修改一下代码,您可以添加以下几行:
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);
希望有所帮助,萨拉姆