我正在创建一个 TicTacToe 游戏。我已将所有带有 ActionListener 的后端放在按钮上,将按钮添加到面板,设置框架等。
但是,当我运行该程序时,我的 JPanel 似乎并未添加到 JFrame 中。我尝试过使用不同的布局,仔细检查我是否确实将 .add 行放入了所有内容,并且所有以前的帖子似乎都导致了我相信我已经涵盖的内容。
如果这真的很简单,我提前道歉。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class BasicGUI {
private String piece="O";
protected static Boolean player=true;
private static final JFrame frame = new JFrame("BasicGUI");
private static final JPanel panel=new JPanel(new GridLayout(4,3));
protected static final JButton[] cells= new JButton[9];
private static final JButton exitButton=new JButton("Exit");
private static final JButton restartButton=new JButton("Restart");
public static void main(String[] args){
createWindow();
createButtons();
}
//Set up frame
private static void createWindow(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450, 600);
//Tried adding panel here and below
//frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
//Tried using getContentPane too
//frame.getContentPane().add(panel, BorderLayout.CENTER);
}
//Add action listeners to buttons
private static void createButtons(){
for(int i=0; i<9; i++){
cells[i]=new JButton();
cells[i].addActionListener(new ButtonHandler());
panel.add(cells[i]);
}
exitButton.addActionListener(new ExitHandler());
restartButton.addActionListener(new RestartHandler());
panel.add(exitButton);
panel.add(restartButton);
frame.add(panel);
}
public String getPiece(){
return piece;
}
protected void setPiece(String s){
this.piece=s;
}
}
感谢您的帮助。
最佳答案
添加面板后调用这两个方法:
frame.pack();
frame.setVisible(true);
关于java - 将 JPanel 添加到 JFrame 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433410/