Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中未调用paintComponent方法_Java_Swing - Fatal编程技术网

Java中未调用paintComponent方法

Java中未调用paintComponent方法,java,swing,Java,Swing,作为我软件工程课程的第一个作业,我正在做这个非常基本和简单的Swing教程,出于一些非常奇怪的原因,我的JPanel中没有调用paintComponent方法。现在我在过去使用过JavaSwing,从来没有遇到过这样的问题 我正在使用的教程可以在Oracle站点上找到(因为它与我的代码相同,所以更容易访问该站点并查看代码) 谁能给我解释一下为什么它不适合我 我的代码: import javax.swing.SwingUtilities; import javax.swing.JFrame; i

作为我软件工程课程的第一个作业,我正在做这个非常基本和简单的Swing教程,出于一些非常奇怪的原因,我的JPanel中没有调用paintComponent方法。现在我在过去使用过JavaSwing,从来没有遇到过这样的问题

我正在使用的教程可以在Oracle站点上找到(因为它与我的代码相同,所以更容易访问该站点并查看代码)

谁能给我解释一下为什么它不适合我

我的代码:

import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel    
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

public class PaintDemo {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createGUI();
        }
    });
}

private static void createGUI() {
    System.out.println("Created GUI on EDT? "+
            SwingUtilities.isEventDispatchThread());
    JFrame frame = new JFrame("Yay, first 2102 lab!!");
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);        // allows to close the program
    DemoPanel panel = new DemoPanel();
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
}
}

class DemoPanel extends JPanel {

public DemoPanel() {
    setBorder(BorderFactory.createLineBorder(Color.BLACK));
}

public Dimension getPreferredSize() {
    return new Dimension(250,200);
}

public void paintComponenet(Graphics g) {
    super.paintComponent(g);
    g.drawString("This is my custom panel!",10,20);
}
}
它是
paintComponent(图形g)
,而不是
paintComponenet(图形g)

至少您正确地调用了
super.paintComponent(g)


如果你用
@Override
注释你的
paint*
方法,你会得到一个编译错误,这将有助于你理解发生了什么。

请发布你的代码,可能你有一个输入错误。为什么代码不能用输入错误编译?@Stephen:我同意,除非他使用了
@Override
注释(我建议他这样做)。1+用于发布代码。@StephenC:是的,丹的打字建议确实正确。