java - 将 JPanel 添加到 JFrame 时遇到问题

标签 java swing

我正在创建一个 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/

相关文章:

java - 在 varnish 后面使用 reSTLet 时出错(反向代理)

java - org.apache.jasper.JasperException : Unable to compile class for JSP and java. io.FileNotFoundException : programs_jsp. java(权限被拒绝)

java - 当选择 JLabel 时,在 JLabel 周围绘制边框,如按钮

java - 如何在 Java 中将图像转换为 BufferedImage?

java - 对 JComboBox 执行操作 - SwingUI

java - 我如何制作一个 GUI,看起来像一个简单的股票市场应用程序的附加图片?

javax.swing.text.html.HTML 文档按名称获取元素

c# - 使用.Net(C#)调用Java函数

java - Web应用程序和应用程序之间的区别?

java - Android kotlin - 取消画廊选择时应用程序停止工作