社区首页 >问答首页 >Java Applet在Eclipse内置applet查看器中没有更新

Java Applet在Eclipse内置applet查看器中没有更新
EN

Stack Overflow用户
提问于 2015-08-27 18:36:29
回答 1查看 159关注 0票数 1

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

代码语言:javascript
代码运行次数:0
复制
import java.applet.*;
import java.awt.*;

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

但是,当我注释掉drawLine()并重新编译它并运行它时,它会显示带有一行的applet,就好像它在代码更改时没有更新一样。下面是注释掉的版本:

代码语言:javascript
代码运行次数:0
复制
 import java.applet.*;
 import java.awt.*;

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

我尝试过重新打开Eclipse,但是它仍然显示带有一行的applet,就像它第一次运行时一样。请告诉我如何让Eclipse更新内置applet查看器中的applet。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 18:38:34

您的Lab04b类不是Applet:

代码语言:javascript
代码运行次数:0
复制
import java.applet.*;
import java.awt.*;

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

因为applet类必须扩展Applet或JApplet,所以您的类都不能扩展。我建议:

  • 让类扩展JApplet
  • 但不要直接在里面画。
  • 相反,在小程序中显示的paintComponent方法中绘制。
  • 一定要给applet类一个init()方法,它将保存它的初始化代码。

例如:

代码语言:javascript
代码运行次数:0
复制
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,因为它们现在很少使用。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32262503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文