日期:2014-05-20  浏览次数:20838 次

java Applet如何在cmd下用main()也能同样运行?
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);
  }
}

------解决方案--------------------
探讨
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(Co……

------解决方案--------------------
你加上下面的code:
Java code

frame0.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            super.windowClosed(e);
            System.exit(0);
        }
    });