gpt4 book ai didi

java - 为什么 JAVA paint() 方法不起作用?

转载 作者:行者123 更新时间:2023-11-29 03:07:19 27 4
gpt4 key购买 nike

谁能解释为什么这段代码没有向我显示 20 x 20 的白色椭圆形?我已经添加了评论,因此您不必搜索太多。我认为我在 paint 方法中做错了什么。或者是别的什么?这是代码:

public class Dodge extends JFrame{      //EXTENDED JFRAME

public Dodge(){
JPanel panel = new JPanel();
//
panel.setBackground(Color.BLACK); //
//
add(panel); //
setTitle("Dodging game"); //
setDefaultCloseOperation(EXIT_ON_CLOSE); // GUI SETUP
setSize(500, 400); //
setLocationRelativeTo(null); //
setResizable(true); //

}

public void paint(Graphics g){
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(Color.WHITE); //THIS METHOD SHOULD GIVE ME AN OVAL
g.fillOval(5, 5, 20, 20);

repaint();
}


public static void main(String[] args){ //

SwingUtilities.invokeLater(new Runnable() { // MAIN THREAD

@Override //
public void run() {
new Dodge().setVisible(true); //

我是初学者所以请清楚哪里出了问题

另外请解释一下,当我什至没有调用它时,这个方法是如何导致程序发生变化的?

最佳答案

paint() 方法在渲染组件时自动调用。

您的椭圆没有显示,因为它隐藏在框架或标题栏的工具栏后面。 (不管你怎么调用它,都是最重要的)。

将您的 fillOval 更改为 g.fillOval(50, 50, 20, 20);,您将看到它。

此外,如果要覆盖它,您应该始终调用 super.paint(g)

此外,不要从您的 paint() 方法调用 repaint()

关于java - 为什么 JAVA paint() 方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com