JPanel将不会显示

时间:2013-12-29 21:43:23

标签: java swing jpanel

我有一个应该发起游戏的课程(main()),以及游戏的开场画面。扩展main()的{​​{1}}(名为Starter)的类会创建一个新的JFrame类(扩展JPanel),并将其添加到JFrame中。

出于某种原因,OpeningScreen不会添加到JFrame中。代码:

OpeningScreen上课:

Starter

import javax.swing.*; import java.awt.*; public class Starter extends JFrame { public Starter(){ setSize(500,500); setResizable(false); setTitle("Ping-Pong Battle"); setDefaultCloseOperation(EXIT_ON_CLOSE); OpeningScreen openingS = new OpeningScreen(); add(openingS); setVisible(true); } public static void main(String[]args){ Starter starter = new Starter(); } } 上课:

OpeningScreen

有什么问题?感谢

编辑:OpeningScreen的构造函数确实运行,但不会将背景涂成黑色。此外,尝试在paint()中绘制东西也不起作用。

2 个答案:

答案 0 :(得分:2)

我认为因为你覆盖了paint()背景没有被绘制,所以它看起来就像没有添加Panel一样。注释掉paint方法导致Window对我来说是黑色的 此外,绘画方法适用于我,也许你的颜色设置为黑色,所以它不显示在黑色背景上?在绘制之前尝试g.setColor(Color.white)。

答案 1 :(得分:2)

您的问题来自覆盖paint课程中的OpeningScreen。没有画出背景,因为你从不画画!请致电super.paint(g)来解决此问题。

但是,generally recommended to use paintComponent() instead of paint().只需将您的代码移至paintComponent

此方法正确地将黑色背景绘制为红色方块:

@Override
public void paintComponent(Graphics g){

    super.paintComponent(g);
    g.fillRect(100, 100, 100, 100);
}