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();
}
}
<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();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货