Java I';我试图在ContentPane中的JPanel上绘制BuffereImage

Java I';我试图在ContentPane中的JPanel上绘制BuffereImage,java,swing,Java,Swing,所以我尝试在JPanel上制作动画(连续绘制不同的png图像文件),但是如果我运行这个JPanel,只有白色屏幕。 我正试图在JPanel上绘制BuffereImage public void run() { try { while (true) { if (GAME_STATE) { .................. } getContentPane

所以我尝试在JPanel上制作动画(连续绘制不同的png图像文件),但是如果我运行这个JPanel,只有白色屏幕。 我正试图在JPanel上绘制BuffereImage

public void run() {
    try {
        while (true) {
            if (GAME_STATE) {
                ..................
            }       
            getContentPane().repaint();
            getContentPane().revalidate();

            Thread.sleep(GAME_SPEED);
        }
    } catch (Exception e) {
    }
}
这是调用repaint()和revalidate()的run方法

这是一个我试图在其上绘制图像的类

public void Game_InterFace() { 
    JLabel Label_Menu_Board = new JLabel();
    JLabel Label_AP_Board = new JLabel();
    JLabel Label_Save_Board = new JLabel();
    JLabel Label_Load_Board = new JLabel();

    Panel_Game panel_Game = new Panel_Game();
    panel_Game.addKeyListener(this);
    .............................................
            .............................................           
    panel_Game.add(btn_Menu);
    panel_Game.add(btn_AP);
    panel_Game.add(label_Status);

    getContentPane().add(panel_Game);
    getContentPane().repaint();
}

public Game_main() {
    start();

    setLocation(0, 0);
    setUndecorated(true);
    setSize(f_width, f_height);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = getContentPane();
    contentPane.setLayout(null);

    Game_Home();
}

您应该重写
paintComponent()
,而不是
paint()
。噢,谢谢!但还有其他问题吗?因为我试图用paintComponent替换,但它仍然不起作用……1)为了更快地获得更好的帮助,请发布一个或。3)
while(true){
这不是在Swing GUI中执行动画的正确方法。而是使用Swing
计时器调用
repaint()
3)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。在不同的地区使用不同的PLAF。因此,它们不利于像素完美的布局。相反,使用布局管理器,或者使用布局填充和边框。很难说,因为我们不知道图像中有什么。请尝试减少程序(画一些简单的东西,而不是所有复杂的东西,等等)。另外,请注意Java语言惯例。变量和方法名称应该是小写(
nameOfMethod
),并且不应该有下划线……例如。
public Game_main() {
    start();

    setLocation(0, 0);
    setUndecorated(true);
    setSize(f_width, f_height);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = getContentPane();
    contentPane.setLayout(null);

    Game_Home();
}