Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFrame没有输出?_Java_Arrays_Jframe - Fatal编程技术网

Java JFrame没有输出?

Java JFrame没有输出?,java,arrays,jframe,Java,Arrays,Jframe,所以我正在尝试创建一个Tictaoe板,但是它没有显示任何内容。 (有一个主类,但它只是创建一个“游戏板”) 我们将非常感谢您的帮助,提前谢谢您 所以我添加了一些组件,真不敢相信我忘记了,我一定是累了 然而现在我得到的只是一个红场 public GameBoard() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

所以我正在尝试创建一个Tictaoe板,但是它没有显示任何内容。 (有一个主类,但它只是创建一个“游戏板”)

我们将非常感谢您的帮助,提前谢谢您

所以我添加了一些组件,真不敢相信我忘记了,我一定是累了

然而现在我得到的只是一个红场

    public GameBoard() 
    {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(0, 0, 195, 215);
        frame.setSize(new Dimension (300, 400));
        int count = 1;
        Rectangle board[][] = new Rectangle[3][3];


        for (int row = 0; row < board.length; row++){
            for (int col = 0; col < board[row].length; col++){
                if (count == 2){

                board[row][col] = new Rectangle(1,1,1,1);
               board[row][col].setBackground(Color.RED);
               frame.add(board[row][col]);
               count--;
            } else {board[row][col] = new Rectangle(1,1,1,1);
                    board[row][col].setBackground(Color.BLACK);
                    frame.add(board[row][col]);
                    count++;
                }
            }}
        frame.pack();
        frame.setVisible(true);
}}

}

从逻辑上讲,您缺少将电路板实际添加到JFrame的步骤:

frame.add(...);
在for循环中,创建JFrame和矩形,但从不将矩形添加到JFrame中

正如@AmitD指出的,JFrame.add()不接受矩形,因此您需要编写一个类来扩展JComponent,以便在其
paintComponent()方法中绘制矩形

要解决显示问题(仅显示红色),请执行以下操作:

您需要为
JFrame
设置布局管理器;我认为
GridLayout
最适合您的情况:

...
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(3,3));
...

从逻辑上讲,您缺少将电路板实际添加到JFrame的步骤:

frame.add(...);
在for循环中,创建JFrame和矩形,但从不将矩形添加到JFrame中

正如@AmitD指出的,JFrame.add()不接受矩形,因此您需要编写一个类来扩展JComponent,以便在其
paintComponent()方法中绘制矩形

要解决显示问题(仅显示红色),请执行以下操作:

您需要为
JFrame
设置布局管理器;我认为
GridLayout
最适合您的情况:

...
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(3,3));
...

创建一个空的JFrame,并创建一组存储到数组中的矩形,但在任何地方都不会绘制这些矩形,因此框架保持为空

您需要在JComponent上绘制这些矩形(通过重写其
paintComponent()
方法),并将该JComponent添加到框架中


编辑:正如@WhiskySpider所指出的,标准矩形类中没有setBackground()方法。因此,如果Rectangle是您的一个类,并且是JComponent的一个子类,那么您需要将Rectangle的实例添加到框架中。

创建一个空的JFrame,并创建一组存储到数组中的矩形,但您从不在任何地方绘制,因此框架保持为空

您需要在JComponent上绘制这些矩形(通过重写其
paintComponent()
方法),并将该JComponent添加到框架中


编辑:正如@WhiskySpider所指出的,标准矩形类中没有setBackground()方法。因此,如果Rectangle是您的一个类,并且是JComponent的子类,则需要将Rectangle的实例添加到框架中。

Rectangle中没有setBackground()方法。Rectangle是您自己的类吗?Rectangle中没有setBackground()方法。矩形是您自己的类吗?用类编辑,程序还有另一个问题。要重写的方法是
paintComponent()
。不是
paint()
。您需要使矩形返回其首选大小,并使用布局管理器(我想到的是GridLayout)来布局框架。实际上,它使用边界布局,所有内容都位于框架的中心。使用类进行编辑,并使用程序的另一个问题进行编辑。覆盖的方法是
paintComponent()
。不是
paint()
。您需要使矩形返回其首选大小,并使用布局管理器(我想到的是GridLayout)来布局框架。事实上,,它使用边框布局,所有内容都位于框架的中心。使用类编辑,程序出现另一个问题。@user1719605请参阅更新的答案:您需要为JFrame设置布局。@user1719605很高兴提供帮助=)使用类编辑,程序出现另一个问题。@user1719605请参阅更新的答案:您需要设置JFrame的布局。@user1719605很高兴能提供帮助=)