Java JFrame背景色不工作
我的代码Java JFrame背景色不工作,java,swing,colors,jframe,Java,Swing,Colors,Jframe,我的代码 public static void main(String[] args) throws InterruptedException { JFrame frame = new JFrame("Flappy bird"); frame.setSize(1200, 800); FlappyBird game = new FlappyBird(); frame.getContentPane().setBackground(Color.YELLOW);
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame("Flappy bird");
frame.setSize(1200, 800);
FlappyBird game = new FlappyBird();
frame.getContentPane().setBackground(Color.YELLOW);
frame.add(game);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
while (true) {
game.moveBall();
game.gameOver();
game.moveRect();
game.repaint();
Thread.sleep(14);
}
}
为什么frame.getContentPane().setBackground(颜色为.YELLOW)不存在代码>工作
我尝试重新排列顺序,比如在使框架可见后设置颜色。它可以正常工作,但您看不到背景色,因为您的FlappyBird
实例绘制在它上面。通过将游戏类替换为空画布,您可以轻松验证这一点,如下所示:
publicstaticvoidmain(String[]args)抛出InterruptedException{
JFrame=新的JFrame(“Flappy bird”);
框架设置尺寸(1200800);
//FlappyBird游戏=新的FlappyBird();
画布游戏=新画布();
frame.getContentPane().setBackground(颜色:黄色);
frame.add(游戏);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setresizeable(false);
//while(true){
//游戏。移动球();
//game.gameOver();
//game.moveRect();
//游戏。重绘();
//睡眠(14);
// }
}
有两件事你可以尝试:
不设置框架内容窗格的背景色,而是设置游戏的背景色
:
//frame.getContentPane().setBackground(颜色.黄色);
游戏。挫折背景(颜色。黄色);
通过使游戏实例透明,确保框架的背景色显示在整个游戏实例中:
game.set不透明(false);
它工作正常,但您无法看到背景色,因为您的FlappyBird
实例绘制在它的顶部。通过将游戏类替换为空画布,您可以轻松验证这一点,如下所示:
publicstaticvoidmain(String[]args)抛出InterruptedException{
JFrame=新的JFrame(“Flappy bird”);
框架设置尺寸(1200800);
//FlappyBird游戏=新的FlappyBird();
画布游戏=新画布();
frame.getContentPane().setBackground(颜色:黄色);
frame.add(游戏);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setresizeable(false);
//while(true){
//游戏。移动球();
//game.gameOver();
//game.moveRect();
//游戏。重绘();
//睡眠(14);
// }
}
有两件事你可以尝试:
不设置框架内容窗格的背景色,而是设置游戏的背景色
:
//frame.getContentPane().setBackground(颜色.黄色);
游戏。挫折背景(颜色。黄色);
通过使游戏实例透明,确保框架的背景色显示在整个游戏实例中:
game.set不透明(false);
删除与游戏相关的行,我能够以预期的黄色结果运行此程序。问题必须在while循环中
while (true) {
game.moveBall();
game.gameOver();
game.moveRect();
game.repaint();
Thread.sleep(14);
}
或
如果没有FlappyBird类,就不可能确切地说出是什么导致了问题,但基于我将查看repaint()的方法名称。删除与游戏相关的行,我能够以预期的黄色结果运行此操作。问题必须在while循环中
while (true) {
game.moveBall();
game.gameOver();
game.moveRect();
game.repaint();
Thread.sleep(14);
}
或
如果没有FlappyBird类,就不可能确切地说是什么导致了问题,但是基于方法名,我将查看repaint()。我投票将这个问题作为离题题来结束,因为问题是为什么核心java的一个组件是以原来的方式实现的,而不是以其他方式实现的。它是什么is@ControlAltDel我不同意,原因不同。请检查我下面的答案。@Thomas我站着更正:)@ControlAltDel别担心;-)我投票结束这个问题,因为这个问题是关于为什么核心java的一个组件是以它原来的方式实现的,而不是其他方式。它是什么is@ControlAltDel我不同意,原因不同。请检查我下面的答案。@Thomas我站着更正:)@ControlAltDel别担心;-)