Tested. Use JB7
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>
HTML Test Page
</title>
</head>
<body>
Applet1 will appear below in a Java enabled browser.<br>
<applet
  codebase = "."
  code     = "Applet1.class"
  name     = "TestApplet"
  width    = "470"
  height   = "400"
  hspace   = "0"
  vspace   = "0"
  align    = "middle"
>
</applet>
</body>
</html>
import java.awt.*;
import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;
public class Applet1 extends JApplet {
   private boolean isStandalone = true;
   Image im;
   private JPanel jPanel1 = new JPanel();
   private JLabel jLabel1 = new JLabel();
   private JTextField txtNum = new JTextField();
   private JButton btnDraw = new JButton();
   private JPanel drawPnl = new JPanel();
   private XYLayout xYLayout1 = new XYLayout();
   //Get a parameter value
   public String getParameter(String key, String def) {
      return isStandalone ? System.getProperty(key, def) :
         (getParameter(key) != null ? getParameter(key) : def);
   }   //Construct the applet
   public Applet1() {
   }
   //Initialize the applet
   public void init() {
      try {
         jbInit();
      }
      catch(Exception e) {
         e.printStackTrace();
      }
   }
   //Component initialization
   private void jbInit() throws Exception {
      this.setSize(new Dimension(470, 408));
      im = getImage(getDocumentBase(),"cctv.jpg");
      jPanel1.setLayout(xYLayout1);
      jLabel1.setText("Biggest Number of *");
      btnDraw.setText("Draw");
      btnDraw.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btnDraw_actionPerformed(e);
         }
      });
      drawPnl.setBackground(Color.pink);
      drawPnl.setBorder(BorderFactory.createRaisedBevelBorder());
      jPanel1.setMinimumSize(new Dimension(455, 329));
      this.getContentPane().add(jPanel1, BorderLayout.CENTER);
      jPanel1.add(drawPnl,  new XYConstraints(3, 11, 457, 239));
      jPanel1.add(txtNum,   new XYConstraints(216, 263, 67, -1));
      jPanel1.add(btnDraw,   new XYConstraints(187, 305, 70, 24));
      jPanel1.add(jLabel1, new XYConstraints(86, 264, 128, -1));
   }
   //Start the applet
   public void start() {
   }
   //Stop the applet
   public void stop() {
   }
   //Destroy the applet
   public void destroy() {
   }
   //Get Applet information
   public String getAppletInfo() {
      return "Applet Information";
   }
   //Get parameter info
   public String[][] getParameterInfo() {
      return null;
   }
   public void paint(Graphics g) {
      st = (max_num == -1)? "error": getD(max_num);      Font font = new Font("Courier New",Font.BOLD,11);
      g.setFont(font);
      txtNum.setText(""+max_num);
      super.paint(g);
      Point p = this.drawPnl.getLocation();
      Dimension d = drawPnl.getSize();
//      g.drawLine(p.x+d.width/2,p.y,p.x+d.width/2,p.y+d.height);
//      g.drawLine(p.x,p.y+d.height/2,p.x+d.width,p.y+d.height/2);
      FontMetrics fm = Toolkit.getDefaultToolkit().getFontMetrics(font);
      if(st.indexOf("\n") == -1) {
         int w = fm.stringWidth(st);
         g.drawString(st, p.x+(d.width-w)/2, p.y + d.height/2);
      }else{
         int LH = (int)fm.getStringBounds(""+c,g).getHeight()-4;
         int leftH = d.height - LH * max_num;
//         g.drawString("left:"+leftH+","+LH+","+max_num,p.x,p.y);
         if(leftH < 0) {
            st = "number too large:"+max_num+"\n";
            leftH = d.height - LH;
         }
         if(max_num % 2 == 0) {
            st = "Don't draw even number:"+max_num+"\n";
            leftH = d.height - LH;
         }
         java.util.StringTokenizer tok = new java.util.StringTokenizer(st,"\n");
         int line = 0;
         while(tok.hasMoreTokens()){
            String tmp = tok.nextToken().trim();
            int w = fm.stringWidth(tmp);
            int w_start = p.x +(d.width-w)/2;
            g.drawString(tmp,w_start,p.y+leftH/2 + LH*(1+line++));
         }
      }   }
   public static String getMultiChars(char ch, int num) {
      StringBuffer b = new StringBuffer();
      for(int i = 0; i < num; i++)
         b.append(ch);
      return b.toString();
   }
   static final char c = '0';
   public static String getD(int num) {
      StringBuffer up = new StringBuffer();
      StringBuffer dn = new StringBuffer();
      for(int i = 1; i < num; i+=2) {
         String tmp = getMultiChars(' ',(num-i)/2)+getMultiChars(c,i) + getMultiChars(' ',(num-i)/2)+"\n";
         up.append(tmp);
         dn.insert(0,tmp);
      }
      return up.toString()+getMultiChars(c,num) + "\n" + dn.toString();
   }   int max_num = 15;
   String st = getD(max_num);
   void btnDraw_actionPerformed(ActionEvent e) {
      try{
         max_num = Integer.parseInt(txtNum.getText().trim());
      }catch(Exception ex){}
      repaint();
   }
}