Java小程序未在Eclipse中更新';s内置小程序查看器

Java小程序未在Eclipse中更新';s内置小程序查看器,java,eclipse,applet,Java,Eclipse,Applet,我只是在学习java小程序。我用drawLine()在小程序上画了一条线,当我按下run时,它正常编译并用Eclipse的内置小程序查看器显示小程序。这是密码 import java.applet.*; import java.awt.*; public class Lab04b { public void paint(Graphics g){ g.drawLine(0, 0, 200, 200); } } 但是,当我注释掉drawLine()并重新编译并运行它时,它

我只是在学习java小程序。我用drawLine()在小程序上画了一条线,当我按下run时,它正常编译并用Eclipse的内置小程序查看器显示小程序。这是密码

import java.applet.*;
import java.awt.*;

public class Lab04b {
    public void paint(Graphics g){
    g.drawLine(0, 0, 200, 200);
    }
}
但是,当我注释掉drawLine()并重新编译并运行它时,它会显示小程序,上面有一条线,就好像代码更改时它没有更新一样。以下是注释掉的版本:

 import java.applet.*;
 import java.awt.*;

public class Lab04b {
    public void paint(Graphics g){
    //g.drawLine(0, 0, 200, 200);
    }
}

我已经尝试重新打开Eclipse,但它仍然显示小程序,上面有一行,就像它第一次运行时一样。请告诉我如何让Eclipse在内置小程序查看器中更新小程序。

您的Lab04b类不是小程序:

import java.applet.*;
import java.awt.*;

public class Lab04b {
    public void paint(Graphics g){
    g.drawLine(0, 0, 200, 200);
    }
}
因为applet类必须扩展applet或JApplet,而您的类则不能。我建议:

  • 让学生扩展JApplet
  • 但不要直接在它里面画
  • 而是在小程序中显示的JPanel的
    paintComponent
    方法中绘制
  • 请确保为小程序类提供一个
    init()
    方法,它将在其中保存初始化代码
例如:

import java.awt.Graphics;
import java.lang.reflect.InvocationTargetException;
import javax.swing.*;

// an applet class must extend either Applet or JApplet
public class AppletTest extends JApplet {

    // it should have an init() method where it holds its initialization code.
    @Override
    public void init() {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    add(new DrawingPanel());
                }
            });
        } catch (InvocationTargetException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

// avoid drawing directly within the applet itself
// but instead draw within a JPanel that is added to the applet
class DrawingPanel extends JPanel {

    // this is the method to draw in
    @Override
    protected void paintComponent(Graphics g) {
        // don't forget to call the super method to do "housekeeping" drawing
        super.paintComponent(g);
        g.drawLine(0, 0, 200, 200);
    }
}
    说到这里,考虑不要学习applet,因为它们现在很少使用。
谢谢!由于我复制/粘贴了教科书中的代码,我不确定为什么它没有包含“扩展”。请问“@覆盖”是什么意思?