你的bean从JApplet继承的话就是一个Applet代码
你的bean里面没有提供默认的构造函数,你在调用的时候,它是执行的无
参数构造函数!
你的调用代码用到了包,你的源代码没有相应的语句

解决方案 »

  1.   

    我改了一下bean,这样子后,运行该页面后,就另外弹出一个窗口,
    图表在那里显示,但这不是我想要的效果,我是想让图表在jsp页面上
    显示。那位能帮忙??package DBConn;import java.awt.*;
    import javax.swing.*;
    import java.lang.*;
    import java.awt.event.*;class ChartTestPanel extends JPanel{
      public ChartTestPanel(double[] v,String[] n,String t){
        names=n;
        values=v;
        title=t;
      }
      public void paintComponent(Graphics g){
        super.paintComponent(g);
        if(values==null||values.length==0) return;
        int i;
        double minValue=0;
        double maxValue=0;
        for(i=0;i<values.length;i++){
          if(minValue>values[i]) minValue=values[i];
          if(maxValue<values[i]) maxValue=values[i];
        }    Dimension d=getSize();
        int clientWidth=d.width;
        int clientHeight=d.height;
        int barWidth=clientWidth/values.length;    Font titleFont=new Font("SansSerif",Font.BOLD,20);
        FontMetrics titleFontMetrics=g.getFontMetrics(titleFont);
        Font labelFont=new Font("SansSerif",Font.PLAIN,10);
        FontMetrics labelFontMetrics=g.getFontMetrics(labelFont);    int titleWidth=titleFontMetrics.stringWidth(title);
        int y=titleFontMetrics.getAscent();
        int x=(clientWidth-titleWidth)/2;
        g.setFont(titleFont);
        g.drawString(title,x,y);    int top=titleFontMetrics.getHeight();
        int bottom=labelFontMetrics.getHeight();
        if(maxValue==minValue) return;
        double scale=(clientHeight-top-bottom)/(maxValue-minValue);
        y=clientHeight-labelFontMetrics.getDescent();
        g.setFont(labelFont);    for(i=0;i<values.length;i++){
          int x1=i*barWidth+1;
          int y1=top;
          int height=(int)(values[i]*scale);
          if(values[i]>=0)
            y1+=(int)((maxValue-values[i])*scale);
          else{
            y1+=(int)(int)(maxValue*scale);
            height=-height;
          }      g.setColor(Color.red);
          g.fillRect(x1,y1,barWidth-2,height);
          g.setColor(Color.black);
          g.drawRect(x1,y1,barWidth-2,height);
          int labelWidth=labelFontMetrics.stringWidth(names[i]);
          x=i*barWidth+(barWidth-labelWidth)/2;
          g.drawString(names[i],x,y);
        }
      }
      private double[] values;
      private String[] names;
      private String title;
    }
    class ChartTestFrame extends JFrame{
      public ChartTestFrame(double[] values,String[] names,String title){
        setTitle("ChartTest");
        setSize(400,300);
        addWindowListener(new WindowAdapter(){
          public void windowClosing(WindowEvent e){
            System.exit(0);
          }
        });
        Container contentPane=getContentPane();
        contentPane.add(new ChartTestPanel(values,names,title));
      }
    }
    public class ChartTest{  public ChartTest() {
      }
      public void Chart(double[] values,String[] names,String title){
        JFrame frame=new ChartTestFrame(values,names,title);
        frame.show();
      }
    }
      

  2.   

    是没有办法在jsp叶面画图的
     因为你在向浏览器输出的东西是靠浏览器来解释的,除非你用html语言来画图

    可以考虑采用applet来显示
    其实你上面的就是一个applet
    你在你的jsp里面不要调用bean
    采用调用applet的语法就可以了
      

  3.   

    我把程序改写成applet的
    但是调用时总是说我class ChartTest not found
    这个class我没有包,并且放在和jsp文件一个目录下。
    不知我这样调用有没有错?
    我该怎么办???import java.awt.*;
    import javax.swing.*;
    import java.lang.*;
    import java.awt.event.*;class ChartTestPanel extends JPanel{
      public ChartTestPanel(double[] v,String[] n,String t){
        names=n;
        values=v;
        title=t;
      }
      public void paintComponent(Graphics g){
        super.paintComponent(g);
        if(values==null||values.length==0) return;
        int i;
        double minValue=0;
        double maxValue=0;
        for(i=0;i<values.length;i++){
          if(minValue>values[i]) minValue=values[i];
          if(maxValue<values[i]) maxValue=values[i];
        }    Dimension d=getSize();
        int clientWidth=d.width;
        int clientHeight=d.height;
        int barWidth=clientWidth/values.length;    Font titleFont=new Font("SansSerif",Font.BOLD,20);
        FontMetrics titleFontMetrics=g.getFontMetrics(titleFont);
        Font labelFont=new Font("SansSerif",Font.PLAIN,10);
        FontMetrics labelFontMetrics=g.getFontMetrics(labelFont);    int titleWidth=titleFontMetrics.stringWidth(title);
        int y=titleFontMetrics.getAscent();
        int x=(clientWidth-titleWidth)/2;
        g.setFont(titleFont);
        g.drawString(title,x,y);    int top=titleFontMetrics.getHeight();
        int bottom=labelFontMetrics.getHeight();
        if(maxValue==minValue) return;
        double scale=(clientHeight-top-bottom)/(maxValue-minValue);
        y=clientHeight-labelFontMetrics.getDescent();
        g.setFont(labelFont);    for(i=0;i<values.length;i++){
          int x1=i*barWidth+1;
          int y1=top;
          int height=(int)(values[i]*scale);
          if(values[i]>=0)
            y1+=(int)((maxValue-values[i])*scale);
          else{
            y1+=(int)(int)(maxValue*scale);
            height=-height;
          }      g.setColor(Color.red);
          g.fillRect(x1,y1,barWidth-2,height);
          g.setColor(Color.black);
          g.drawRect(x1,y1,barWidth-2,height);
          int labelWidth=labelFontMetrics.stringWidth(names[i]);
          x=i*barWidth+(barWidth-labelWidth)/2;
          g.drawString(names[i],x,y);
        }
      }
      private double[] values;
      private String[] names;
      private String title;
    }public class ChartTest extends JApplet{
      public void init(){
        int len=Integer.parseInt(getParameter("length"));
        double[] values=new double[len];
        String[] names=new String[len];
        String title=getParameter("title");
        for(int i=0;i<len;i++){
          values[i]=Double.parseDouble(getParameter("values"+i));
          names[i]=getParameter("names"+i);
          System.out.println(names[i]);
        }
        Container contentPane=getContentPane();
        contentPane.add(new ChartTestPanel(values,names,title));
      }
    }
    jsp文件是这样的<%@ page language = "java"%>
    <%@ page import = "java.util.*"%>
    <%@ page import = "java.io.*"%>
    <%@ page import = "javax.servlet.http.*"%>
    <%@ page import = "javax.servlet.*"%>
    <%@ page import = "java.sql.*"%>
    <% response.setHeader("Expires","0"); %>
    <%@ page import="PubUtil.IncSource.MiscDate"%>
    <%@ page contentType="text/html; charset=GB2312" %>
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head><body>
    <div align="center">
    <%
    double[] values={3100,7500,8000,4200,88000,71000,3200,30600};
    String[] names={"a","b","c","d","e","f","g","h"};
    int len=values.length;
    %>
    <applet code="ChartTest.class" width=400 height=300>
        <param name="title" value="ChartTest">
        <param name="length" value="<%=len%>">
    <%
    for(int i=0;i<len;i++){
    %>
        <param name="values<%=i%>" value="<%=values[i]%>">
        <param name="names<%=i%>" value="<%=names[i]%>">
    <% } %>
      </applet>
    </div>
    </body>
    </html>
      

  4.   

    <applet codebase="." code="ChartTest.class" width=400 height=300>
    还是最好放在包里面
      

  5.   

    是不是codebase就是指包的名称,象bean那样会自动调用class中的文件?
    我试试看。
      

  6.   

    还是那样子
    调用时总是说我class ChartTest not found
    怎么办??
      

  7.   

    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body>
    <applet  code="A.Applet1" width=400 height=300>
        
    </applet>dfds
    dsfds
    dsf
    s
    dsf
    sdf
    ds
    fds
    f
    dsf
    ds
    </body>
    </html>
    ////////////
    Applet1.class放在A下面,
    A和你的jsp文件在同一个目录下面