mport java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class webTest extends Applet
{
public void paint(Graphics g)
{
int k=10;
g.setColor(Color.red);
for (int i=1;i<=30;i++)
g.drawString(""+i,20,20+i*15);
}
public static void main(String args[])
{
Frame frame0=new Frame("Frame1");
frame0.setSize(800,600);
frame0.setVisible(true);
Graphics g=frame0.getGraphics();
webTest web1=new webTest();
web1.paint(g);
}
关键是如何在静态方法中,调用 paint(Graphics g)问题,
1.不能直接在main()中调用paint(Graphics g),有没有更好的方法?
2.frame0没法关闭,如何用事件解决?
3.我的上述代码虽然能显示,但Frame0中显示的东西一旦破坏就不能自动刷新,
如何放到重画事件中?
------解决方案--------------------
如果方法是静态方法的话,可以用类名.方法调用..即是: webTest.paint();
如果方法不是静态方法的话,必须先行实例化webTest类的对象,再用对象调用..
即:
webTest wt= new webTest();
wt.paint();
------解决方案--------------------
- Java code
import java.applet.Applet;import java.awt.Color;import java.awt.Frame;import java.awt.Graphics;public class WebTest extends Applet //类的名字建议大写{ public void paint(Graphics g) { int k=10; g.setColor(Color.red); for (int i=1;i<=30;i++) g.drawString(""+i,20,20+i*15); } public static void main(String args[]) { Frame frame0=new Frame("Frame1"); WebTest web1=new WebTest(); frame0.add(web1); //Applet是Panel类的子类,所以,当做Panel直接加在Frame里面就行了。 frame0.setSize(800,600); frame0.setVisible(true); }}
------解决方案--------------------
------解决方案--------------------
你加上下面的code:
- Java code
frame0.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosed(e); System.exit(0); } });