我只是在学习java小程序。我用drawLine()在applet上画了一条线,当我按下run时,它正常编译,并使用Eclipse内置的applet查看器显示applet。这是密码
import java.applet.*;
import java.awt.*;
public class Lab04b {
public void paint(Graphics g){
g.drawLine(0, 0, 200, 200);
}
}
但是,当我注释掉drawLine()并重新编译它并运行它时,它会显示带有一行的applet,就好像它在代码更改时没有更新一样。下面是注释掉的版本:
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。
发布于 2015-08-27 18:38:34
您的Lab04b类不是Applet:
import java.applet.*;
import java.awt.*;
public class Lab04b {
public void paint(Graphics g){
g.drawLine(0, 0, 200, 200);
}
}
因为applet类必须扩展Applet或JApplet,所以您的类都不能扩展。我建议:
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);
}
}
https://stackoverflow.com/questions/32262503
复制相似问题