当前位置: 首页 > 知识库问答 >
问题:

将JPanel添加到JFrame时遇到问题

松德曜
2023-03-14

我正在创建一个TicTacToe游戏。我把所有带有ActionListeners的后端放在按钮上,将按钮添加到面板,设置框架等等。

然而,当我运行程序时,我的JPanel似乎没有添加到JFrame中。我试过使用不同的布局,仔细检查是否确实放置了。为所有内容添加行,之前的所有帖子似乎都指向了我认为已经涵盖的内容。

如果这真的很直接,我提前道歉。

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;
    }
}

谢谢你的帮助。

共有1个答案

宋丰
2023-03-14

添加面板后,请调用这两种方法:

frame.pack();
frame.setVisible(true);
 类似资料:
  • 我正在尝试将此 JPanel 添加到 JFrame 中,但我看不到他。当我创建新的 java 类并自己制作这个框架时,一切都很好。 来自JFrame表单的代码。 来自 JPanel 的代码: 来自Java类的代码。 我想不出区别在哪里。有人能帮我吗?

  • 我已经在网上看了,但我仍然无法理解如何将图形添加到JPanel 以下是我的panel类的代码: 我的主要方法是: 文本只会出现在屏幕的一小部分(这适用于我试图绘制的任何图形对象)。我做错了什么?

  • 我一直在使用JFrame进行我的项目,但遇到了一个问题。这是我的代码: 还有,这是我的主要。java: 我想做的是向面板添加文本字段和标签。但是,当我运行此代码时,它会显示:结果 如果我在框架中添加标签和文本字段,效果很好。你能帮我解决这个问题吗?非常感谢你。

  • 问题内容: 我有一个gui,它的Panel包含一系列标签和TextField,并使用spring布局(这是mainPanel),而另一个Panel仅包含button(buttonPanel)。我正在尝试使我的mainPanel也具有垂直滚动条。我想实现我的GUI,以便在JFrame中有2个面板。mainPanel出现在框架的顶部,而buttonPanel出现在mainPanel的下方。 我的问题是

  • 我正在创建一个swing应用程序,并希望将JfreeChart添加到JPanel中。我创建了一个方法,在该方法中我创建了如下所示的图表: 创建了一个全局变量: 由于某种原因,当我点击按钮时,图表没有显示出来。

  • 我目前有一个主JFrame包含几个JPanels,每个面板中都有一些文本。创建JPanels的代码在一个单独的类中(它“实现”JPanels)。如何仅向单个面板添加JScrollPane? 我已经花了一些时间尝试这样做,但什么也没有发生。顺便说一下,我的JPanel使用GridLayout 上面的类是另一个面板类的实例变量,它是主面板“MenuHold”的实例变量。但使用“MenuHolder”的