繁体   English   中英

repaint()未在Java中调用paintComponent()

[英]repaint() not calling paintComponent() in java

我正在编写应该是一个简单的代码,该代码创建一个JFrame对象,然后将背景绘制为黑色,并绘制一个蓝色正方形。 但是,repaint()方法未调用paintComponent()方法。

这是代码:

import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Container;

public class Snake extends JPanel{
        private Vector xCoords = new Vector();
        private Vector yCoords = new Vector();

        public Snake(){
                xCoords.add(150);
                yCoords.add(150);
        }

        public void startJFrame(){
                JFrame window = new JFrame();
                window.setSize(300, 300);
                window.setVisible(true);
                window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                Container c = window.getContentPane();
                c.setBackground(Color.black);
        }

        public void paintRequest(){
                System.out.println("Request to paint received.");
                repaint();
        }

        public void paintComponent(Graphics g){
                super.paintComponent(g);
                System.out.println("paintComponent was called");
                g.setColor(Color.blue);
                int x = (int)xCoords.get(0);
                int y = (int)yCoords.get(0);
                g.fillRect(x, y, 10, 10);
        }

        public static void main(String[] args){
                Snake mkFrame = new Snake();
                mkFrame.startJFrame();
                mkFrame.paintRequest();
        }
}

我知道正确调用了paintRequest(),因为它会打印“收到绘画请求”,但是永远不会打印“被调用paintComponent”。 在gui端,创建了JFrame窗口,它具有黑色背景,但是没有蓝色正方形。 预先感谢您的帮助。

没有Snake添加到框架!

更改:

    JFrame window = new JFrame();

至:

    JFrame window = new JFrame();
    window.add(new Snake());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM