我写了个统计表的bean,编译通过没有问题,但就是调用时显示不出来?帮帮忙?? 你的bean从JApplet继承的话就是一个Applet代码你的bean里面没有提供默认的构造函数,你在调用的时候,它是执行的无参数构造函数!你的调用代码用到了包,你的源代码没有相应的语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我改了一下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(); }} 是没有办法在jsp叶面画图的 因为你在向浏览器输出的东西是靠浏览器来解释的,除非你用html语言来画图可以考虑采用applet来显示其实你上面的就是一个applet你在你的jsp里面不要调用bean采用调用applet的语法就可以了 我把程序改写成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> <applet codebase="." code="ChartTest.class" width=400 height=300>还是最好放在包里面 是不是codebase就是指包的名称,象bean那样会自动调用class中的文件?我试试看。 还是那样子调用时总是说我class ChartTest not found怎么办?? <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>dfdsdsfdsdsfsdsfsdfdsfdsfdsfds</body></html>////////////Applet1.class放在A下面,A和你的jsp文件在同一个目录下面 请问打印机要打印的数据能够截取到吗?不是图片是数据。 多线程问题 高手请进!关于一个二分插入排序的问题。。 JBuilder7.0怎么不能调试 求救! 刚过scjp,89% 关于JDBC的问题 提议 JBuilder初学者的问题 java开发第三方提示接入授权文件失败??? IBM WAS的应用部署后,其配置文件在哪里? 那里错了,我找不出来,请各位朋友帮助一下,好心人,热心人帮助一下,
图表在那里显示,但这不是我想要的效果,我是想让图表在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();
}
}
因为你在向浏览器输出的东西是靠浏览器来解释的,除非你用html语言来画图
可以考虑采用applet来显示
其实你上面的就是一个applet
你在你的jsp里面不要调用bean
采用调用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>
还是最好放在包里面
我试试看。
调用时总是说我class ChartTest not found
怎么办??
<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文件在同一个目录下面