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