我正在阅读Head First Java,但我对这个程序感到困惑

coq*_*qer 2 java swing

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class twobuttons
{
    int x=70;
    int y=70;

    public static void main(String args[])
    {
        twobuttons gui =new twobuttons();
        gui.go();
    }

    public void go()
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        mydraw drawpanel = new mydraw();

        frame.getContentPane().add(drawpanel);
        frame.setSize(300,300);
        frame.setVisible(true);

        for(int i=0;i<130;i++)
        {
            x++;
            y++;

            drawpanel.repaint();
            try
            {
                Thread.sleep(50);
            }
            catch(Exception ex)
            {

            }
        }

    }
    class mydraw extends JPanel
    {

        public void paintconponent(Graphics g)
        {
            g.setColor(Color.green);
            g.fillOval(x, y, 40, 40);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Head First Java的第12章p384的代码(我正在阅读中文版,也许它不在英文版的同一页面.)如果成功,应该有一个点从左角到达然而,在右上角,我在窗口看不到任何东西.

ass*_*ias 5

你在绘画类中有一个拼写错误(paintconponent => paintComponent).所以你没有重写JComponent超类的行为.试试这个:

class mydraw extends JPanel
{

    @Override
    public void paintComponent(Graphics g)
    {
        g.setColor(Color.green);
        g.fillOval(x, y, 40, 40);
    }
}
Run Code Online (Sandbox Code Playgroud)