Applet中有个方法叫paint(Graphics g),形参g调用drawString方法有三个参数drawString(String,int,int)
这个方法如何使用,不是很清楚。因为我写了一个小程序,用drawString就是没法显示。class Lottery
{
public byte[] number;
public Lottery()
{
number = new byte[7];//默认情况有七个号码
  for(int i=0; i<number.length; i++)
  number[i] = (byte)-1;//考虑到有些彩票类种中有0,初始化不选择0而是-1
}

//判断一个数是否已经在数组中存在  
public boolean isRepeated(byte temp) 
{
for(int i=0; i<number.length; i++)
if(temp == number[i]) return true;
return false;
}
 
}
public class TwoColorBall extends Lottery
{
public void init()
{
//产生6个红色球号码,并排序
for(int i=0; i<6; i++)
{
byte temp;
do
 temp=(byte)(Math.random()*33+1);
 while(isRepeated(temp));
number[i]=temp; 
}
sort();
 //产生蓝色球号码
number[6]=(byte)(Math.random()*16+1);
}
public void sort()
{
//冒泡排序
for(int i=0;i<6;i++)
 for(int j=0;j<5-i;j++)
 if(number[j+1]<number[j])
 {
  byte temp=number[j+1];
  number[j+1]=number[j];
  number[j]=temp;
}
}
}
  
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class DrawTwoColorBall extends Applet implements ActionListener
{
int stakes;//购买数量
TextField t1 = new TextField(2);
Label prompt = new Label("注");
Button buy = new Button("购买");

public void init()
{
add(t1);add(prompt);add(buy);
  buy.addActionListener(this);
}

public void actionPerformed(ActionEvent e)
{
stakes = Integer.parseInt(t1.getText());
repaint();
}

public void paint(Graphics g)
{
     TwoColorBall[] tickets = new TwoColorBall[stakes];
     for(int i=0; i<stakes; i++)
     {
     tickets[i].init();   //初始化每一注彩票 
     //显示6个红色球号码 
     for(int j=0; j<6; j++)   
        g.drawString(""+tickets[i].number[j],20+20*j,50+20*i);
     
     //显示蓝色球号码  
     g.drawString("+"+tickets[i].number[6],140,50+20*i);
   }
}  
}
最后一个类继承applet,嵌在html里,输入数字按提交后没法显示内容

解决方案 »

  1.   

    找到原因了不是函数本身问题。最后paint函数中代码有误,缺少红色代码部分。是我没实例化对象造成的public void paint(Graphics g)
        {
                 TwoColorBall[] tickets = new TwoColorBall[stakes];
                 for(int i=0;i<stakes;i++)
                    tickets[i]=new TwoColorBall();
                 for(int i=0; i<stakes; i++)
                 {
                     tickets[i].init();   //初始化每一注彩票 
                     //显示6个红色球号码 
                     for(int j=0; j<6; j++)   
                           g.drawString(""+tickets[i].number[j],20+20*j,50+20*i);
                     
                     //显示蓝色球号码  
                     g.drawString("+"+tickets[i].number[6],140,50+20*i);
                   }
            }  这个小程序已经被上传到我空间 http://tian.ys168.com密码coming 中java目录下的双色球