我有一个应该发起游戏的课程(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()中绘制东西也不起作用。
答案 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);
}