﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-weibogao-随笔分类-ria</title><link>http://www.blogjava.net/weibogao/category/9215.html</link><description>my second lifespace</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 22:03:52 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 22:03:52 GMT</pubDate><ttl>60</ttl><item><title>模式对话框的详细使用说明</title><link>http://www.blogjava.net/weibogao/archive/2006/09/20/70715.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Wed, 20 Sep 2006 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/weibogao/archive/2006/09/20/70715.html</guid><wfw:comment>http://www.blogjava.net/weibogao/comments/70715.html</wfw:comment><comments>http://www.blogjava.net/weibogao/archive/2006/09/20/70715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/weibogao/comments/commentRss/70715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/weibogao/services/trackbacks/70715.html</trackback:ping><description><![CDATA[
		<p>javascript有许多内建的方法来产生对话框，如：window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如： <br /><br />　　showModalDialog() (IE 4+ 支持) <br />　　showModelessDialog() (IE 5+ 支持) <br /><br /><br />window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框，由于是对话框，因此它并没有一般用window.open()打开的窗口的所有属性。 <br />window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 <br /><br />当我们用showModelessDialog()打开窗口时，不必用window.close()去关闭它，当以非模态方式［IE5］打开时， 打开对话框的窗口仍可以进行其他的操作，即对话框不总是最上面的焦点，当打开它的窗口ＵＲＬ改变时，它自动关闭。而模态［ＩＥ４］方式的对话框始终有焦点（焦点不可移走，直到它关闭）。模态对话框和打开它的窗口相联系，因此我们打开另外的窗口时，他们的链接关系依然保存，并且隐藏在活动窗口的下面。 <br /><br />使用方法如下： <br />vReturnvalue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) <br />vReturnvalue = window.showModelessDialog(sURL [, vArguments] [, sFeatures]) <br />参数说明： <br />sURL <br />必选参数，类型：字符串。用来指定对话框要显示的文档的URL。 <br />vArguments <br />可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 <br />sFeatures <br />可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，用分号“;”隔开。 <br />  dialogHeight 对话框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px做单位。 <br />　　dialogWidth: 对话框宽度。 <br />　　dialogLeft: 距离桌面左的距离。 <br />　　dialogTop: 离桌面上的距离。 <br />　　center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。 <br />　　help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。 <br />　　resizable: {yes | no | 1 | 0 } ［ＩＥ５＋］：是否可被改变大小。默认no。 <br />　　status: {yes | no | 1 | 0 } ［IE5+］：是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 <br />  scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。 <br /><br />  还有几个属性是用在HTA中的，在一般的网页中一般不使用。 <br />  dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。默认为no。 <br />  edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。 <br />  unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。 <br /><br />传入参数： <br />要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，最大为4096个字符。也可以传递对象，例如： <br /><br />test1.htm <br />==================== <br />&lt;script&gt; <br />  var mxh1 = new Array("mxh","net_lover","孟子E章") <br />  var mxh2 = window.open("about:blank","window_mxh") <br />  // 向对话框传递数组 <br />  window.showModalDialog("test2.htm",mxh1) <br />  // 向对话框传递window对象 <br />  window.showModalDialog("test3.htm",mxh2) <br />&lt;/script&gt; <br /><br />test2.htm <br />==================== <br />&lt;script&gt; <br />  var a = window.dialogArguments <br />  alert("您传递的参数为：" + a) <br />&lt;/script&gt; <br /><br />test3.htm <br />==================== <br />&lt;script&gt; <br />  var a = window.dialogArguments <br />  alert("您传递的参数为window对象，名称：" + a.name) <br />&lt;/script&gt; <br /><br />可以通过window.returnvalue向打开对话框的窗口返回信息，当然也可以是对象。例如： <br /><br />test4.htm <br />=================== <br />&lt;script&gt; <br />  var a = window.showModalDialog("test5.htm") <br />  for(i=0;i&lt;a.length;i++) alert(a[i]) <br />&lt;/script&gt; <br /><br />test5.htm <br />=================== <br />&lt;script&gt; <br />function sendTo() <br />{ <br />  var a=new Array("a","b") <br />  window.returnvalue = a <br />  window.close() <br />} <br />&lt;/script&gt; <br />&lt;body&gt; <br />&lt;form&gt; <br />  &lt;input value="返回" type=button onclick="sendTo()"&gt; <br />&lt;/form&gt; <br /><br />常见问题： <br />1，如何在模态对话框中进行提交而不新开窗口？ <br />如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe，提交时可以制定target为该iframe的name。对于IE4+，你可以用高度为0的frame来作：例子， <br /><br />test6.htm <br />=================== <br />&lt;script&gt; <br />  window.showModalDialog("test7.htm") <br />&lt;/script&gt; <br /><br />test7.htm <br />=================== <br />if(window.location.search) alert(window.location.search) <br />&lt;frameset rows="0,*"&gt; <br />  &lt;frame src="about:blank"&gt; <br />  &lt;frame src="test8.htm"&gt; <br />&lt;/frameset&gt; <br /><br />test8.htm <br />=================== <br />&lt;form target="_self" method="get"&gt; <br />&lt;input name=txt value="test"&gt; <br />&lt;input type=submit&gt; <br />&lt;/form&gt; <br />&lt;script&gt; <br />if(window.location.search) alert(window.location.search) <br />&lt;/script&gt; <br />2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗？ <br />答案是不能。但在frame里是可以的。 <br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－ <br />另外： <br /><a href="http://www.csdn.net/" target="_blank">http://www.csdn.net/</a><br />本人整理 <br /><br />问： <br />1.模态窗口的打开 <br />2.模态窗口的关闭 <br />3.模态窗口的传递参数。 <br />4.其他。。。。 <br /><br />hgknight(江雨.net)答： <br />1.window.showModalDialog("DialogPage.aspx","newwin","dialogHeight: 200px; dialogWidth: 150px; dialogTop: 458px; dialogLeft: 166px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;"); <br /><br />2.window.close(); <br /><br />3.传值 <br />ParentPage.aspx: <br />window.showModalDialog("DialogPage.aspx?para1=aaa¶2=bbb"); <br /><br />DialogPage.aspx: <br />string str1=Request.QueryString["para1"].toString(); <br />string str2=Request.QueryString["para2"].toString(); <br /><br />返回值 <br />DialogPage.aspx: <br />window.returnvalue="aaa"; <br /><br />ParentPage.aspx: <br />var str=window.showModalDialog("DialogPage.aspx"); <br /><br />4. <br />aspx页面在showmodeldialog情况下为什么一提交就重新打开一个页面? <br />showmodaldialog打开的页面中在&lt;head&gt;&lt;/head&gt;之间加入一行：&lt;base target="_self"&gt; <br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－ <br />snowjin78(方圆) <br />以前，我也问过此类问题，现把收获贴如下（当然好多东西都是别人告诉我的）： <br />最好不要用Response.Write(  "  &lt;script....  &lt;/script  &gt;  ")这样的方法注册客户端脚本，而应该用Page.RegisterStartupScript或Page.RegisterClientScriptBlock方法来注册. <br />Page.RegisterClientScriptBlock：   <br />在  Page  对象的    &lt;form  runat=  server  &gt;  元素的开始标记后立即发出客户端脚本   <br />Page.RegisterStartupScript:   <br />该方法在  Page  对象的    &lt;form  runat=  server  &gt;  元素的结束标记之前发出该脚本 <br /><br />客户端代码有两个问题，第一是把window写成了Window，javascript是严格区分大小写的，用Window是肯定会出错的；第二个问题是设置对话框的宽度用dialogWidth，高度用dialogHeight，而不是height和width。！</p>
<img src ="http://www.blogjava.net/weibogao/aggbug/70715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/weibogao/" target="_blank">weibogao</a> 2006-09-20 10:27 <a href="http://www.blogjava.net/weibogao/archive/2006/09/20/70715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web页面打印的相关脚本</title><link>http://www.blogjava.net/weibogao/archive/2006/07/13/57929.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Thu, 13 Jul 2006 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/weibogao/archive/2006/07/13/57929.html</guid><wfw:comment>http://www.blogjava.net/weibogao/comments/57929.html</wfw:comment><comments>http://www.blogjava.net/weibogao/archive/2006/07/13/57929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/weibogao/comments/commentRss/57929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/weibogao/services/trackbacks/57929.html</trackback:ping><description><![CDATA[
		<p style="LINE-HEIGHT: 150%">
				<font class="f14" id="zoom" style="FONT-SIZE: 14px">1、控制"纵打"、 横打”和“页面的边距。 <br />（1）&lt;script defer&gt; <br />function SetPrintSettings() { <br />　// -- advanced features <br />　factory.printing.SetMarginMeasure(2) // measure margins in inches <br />　factory.SetPageRange(false, 1, 3) // need pages from 1 to 3 <br />　factory.printing.printer = "HP DeskJet 870C" <br />　factory.printing.copies = 2 <br />　factory.printing.collate = true <br />　factory.printing.paperSize = "A4" <br />　factory.printing.paperSource = "Manual feed" <br /><br />　// -- basic features <br />　factory.printing.header = "This is MeadCo" <br />　factory.printing.footer = "Advanced Printing by ScriptX" <br />　factory.printing.portrait = false <br />　factory.printing.leftMargin = 1.0 <br />　factory.printing.topMargin = 1.0 <br />　factory.printing.rightMargin = 1.0 <br />　factory.printing.bottomMargin = 1.0 <br />} <br />&lt;/script&gt; <br /><br />（2） <br />&lt;script language="javascript"&gt; <br />　　function printsetup(){ <br />　　// 打印页面设置 <br />　　wb.execwb(8,1); <br />　　} <br />　　function printpreview(){ <br />　　// 打印页面预览 <br />　　　　 <br />　　wb.execwb(7,1); <br />　　　　　 <br />　　　　 <br />　　} <br /><br />　　function printit() <br />　　{ <br />　　if (confirm('确定打印吗？')) { <br />　　wb.execwb(6,6) <br />　　} <br />　　} <br />　　&lt;/script&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" <br /><br />height=0 id=wb name=wb width=0&gt;&lt;/OBJECT&gt; <br />&lt;input type=button name=button_print value="打印" <br /><br />onclick="javascript:printit()"&gt; <br />&lt;input type=button　name=button_setup value="打印页面设置" <br /><br />onclick="javascript:printsetup();"&gt; <br />&lt;input type=button　name=button_show value="打印预览" <br /><br />onclick="javascript:printpreview();"&gt; <br />&lt;input type=button name=button_fh value="关闭" <br /><br />onclick="javascript:window.close();"&gt; <br /><br />------------------------------------------------ <br />关于这个组件还有其他的用法，列举如下： <br />WebBrowser.ExecWB(1,1) 打开 <br />Web.ExecWB(2,1) 关闭现在所有的IE窗口，并打开一个新窗口 <br />Web.ExecWB(4,1) 保存网页 <br />Web.ExecWB(6,1) 打印 <br />Web.ExecWB(7,1) 打印预览 <br />Web.ExecWB(8,1) 打印页面设置 <br />Web.ExecWB(10,1) 查看页面属性 <br />Web.ExecWB(15,1) 好像是撤销，有待确认 <br />Web.ExecWB(17,1) 全选 <br />Web.ExecWB(22,1) 刷新 <br />Web.ExecWB(45,1) 关闭窗体无提示 <br /><br />2、分页打印 <br />&lt;HTML&gt; <br />&lt;HEAD&gt; <br />&lt;STYLE&gt;　　 <br />　　P {page-break-after: always} <br />&lt;/STYLE&gt; <br />&lt;/HEAD&gt; <br />&lt;BODY&gt; <br />&lt;%while not rs.eof%&gt; <br />&lt;P&gt;&lt;%=rs(0)%&gt;&lt;/P&gt; <br />&lt;%rs.movenext%&gt; <br />&lt;%wend%&gt; <br />&lt;/BODY&gt; <br />&lt;/HTML&gt; <br /><br />3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号 <br />（1）ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉，打印就不出来了。 <br />（2）&lt;HTML&gt; <br />&lt;HEAD&gt; <br />&lt;TITLE&gt; New Document &lt;/TITLE&gt; <br />&lt;META NAME="Generator" CONTENT="EditPlus"&gt; <br />&lt;META NAME="Author" CONTENT="YC"&gt; <br />&lt;script language="VBScript"&gt; <br />dim hkey_root,hkey_path,hkey_key <br />hkey_root="HKEY_CURRENT_USER" <br />hkey_path="\Software\Microsoft\Internet Explorer\PageSetup" <br />'//设置网页打印的页眉页脚为空 <br />function pagesetup_null() <br />　　on error resume next <br />　　Set RegWsh = CreateObject("WScript.Shell") <br />　　hkey_key="\header"　　 <br />　　RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" <br />　　hkey_key="\footer" <br />　　RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" <br />end function <br />'//设置网页打印的页眉页脚为默认值 <br />function pagesetup_default() <br />　　on error resume next <br />　　Set RegWsh = CreateObject("WScript.Shell") <br />　　hkey_key="\header"　　 <br />　　RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&amp;w&amp;b页码，&amp;p/&amp;P" <br />　　hkey_key="\footer" <br />　　RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&amp;u&amp;b&amp;d" <br />end function <br />&lt;/script&gt; <br />&lt;/HEAD&gt; <br /><br />&lt;BODY&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt;&lt;p align=center&gt; <br />&lt;input type="button" value="清空页码" onclick=pagesetup_null()&gt; &lt;input type="button" value="恢复页吗" onclick=pagesetup_default()&gt;&lt;br/&gt; <br /><br />&lt;/p&gt; <br />&lt;/BODY&gt; <br />&lt;/HTML&gt; <br />4、浮动帧打印 <br />&lt;SCRIPT LANGUAGE=javascript&gt; <br />function button1_onclick() { <br />　　var odoc=window.iframe1.document; <br />　　var r=odoc.body.createTextRange(); <br />　　var stxt=r.htmlText; <br />　　alert(stxt) <br />　　var pwin=window.open("","print"); <br />　　pwin.document.write(stxt); <br />　　pwin.print(); <br />} <br />&lt;/SCRIPT&gt; <br />4、用FileSystem组件实现WEB应用中的本地特定打印 <br />&lt;script Language=VBScript&gt; <br />function print_onclick //打印函数 <br />dim label <br />label=document.printinfo.label.value //获得HTML页面的数据 <br />set objfs=CreateObject("Scripting.FileSystemObject") //创建FileSystem组件对象的实例 <br />set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立与打印机的连接 <br />objprinter.Writeline("__________________________________") //输出打印的内容 <br />objprinter.Writeline("| |") <br />objprinter.Writeline("| 您打印的数据是："&amp;label&amp; " |”) <br />objprinter.Writeline("| |") <br />objprinter.Writeline("|_________________________________|") <br />objprinter.close //断开与打印机的连接 <br />set objprinter=nothing <br />set objfs=nothing // 关闭FileSystem组件对象 <br />end function <br />&lt;/script&gt; <br />服务器端脚本： <br />&lt;%……… <br />set conn=server.CreateObject ("adodb.connection") <br />conn.Open "DSN=name;UID=XXXX;PWD=XXXX;" <br />set rs=server.CreateObject("adodb.recordset") <br />rs.Open(“select ……”),conn,1,1 <br />……….%&gt; //与数据库进行交互 <br />HTML页面编码： <br />&lt;HTML&gt; <br />……… <br />&lt;FORM ID=printinfo NAME="printinfo" &gt; <br />&lt;INPUT type="button" value="打印&gt;&gt;" id=print name=print &gt; //调用打印函数 <br />&lt;INPUT type=hidden id=text1 name=label value=&lt;%=………%&gt;&gt; //保存服务器端传来的数据 <br />……… <br />&lt;/HTML&gt;</font>
		</p>
<img src ="http://www.blogjava.net/weibogao/aggbug/57929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/weibogao/" target="_blank">weibogao</a> 2006-07-13 11:25 <a href="http://www.blogjava.net/weibogao/archive/2006/07/13/57929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jfreechart使用总结</title><link>http://www.blogjava.net/weibogao/archive/2006/07/11/57622.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Tue, 11 Jul 2006 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/weibogao/archive/2006/07/11/57622.html</guid><wfw:comment>http://www.blogjava.net/weibogao/comments/57622.html</wfw:comment><comments>http://www.blogjava.net/weibogao/archive/2006/07/11/57622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/weibogao/comments/commentRss/57622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/weibogao/services/trackbacks/57622.html</trackback:ping><description><![CDATA[
		<p>
				<br />
				<br />这里分三部分来介绍 jFreeChart 。第一部分介绍jFreeChart产生<br />图形的流程及相关的重要的类；第二部分介绍四种常用的报表图（饼图、柱状图、折线图、时间序列图）；第三部分<br />介绍在图形中增加Item Lable 。 <br />jFreeChart 的版本是jfreechart-1.0.0-pre2(1)<br /><br /></p>
		<p>[b]一、jFreeChart产生图形的流程[/b]<br />   创建一个数据源（dataset）来包含将要在图形中显示的数据,创建一个 JFreeChart 对象来代表要显示的图形<br />   把图形输出<br />   重要的类和接口：<br />   org.jfree.data.general.Dataset  所有数据源类都要实现的接口<br />   org.jfree.chart.ChartFactory    由它来产生 JFreeChart 对象<br />   org.jfree.chart.JFreeChart    所有对图形的调整都是通过它噢！！<br />   org.jfree.chart.plot.Plot    通过JFreeChart 对象获得它，然后再通过它对图形外部部分（例：坐标轴）调整<br />                                注意：它有很多子类，一般都下嗍造型到它的子类！<br />   org.jfree.chart.renderer.AbstractRenderer     通过JFreeChart 对象获得它，然后再通过它对图形内部部分<br />                                                （例：折线的类型）调整。同样，针对不同类型的报表图，它有<br />                                                着不同的子类实现！在下面我们简称它为 Renderer<br />   下面我们结合不同类型的图形来具体分析这个流程。<br />   <br />[b]二、饼图[/b]<br />   饼图的dataset 一般是用PieDataset 接口，具体实现类是 DefaultPieDataset<br />   1、创建一个数据源（dataset）：<br />    private static PieDataset createDataset()<br />    {<br />        DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); //注意是DefaultPieDataset！！<br />        defaultpiedataset.setValue("One", new Double(43.200000000000003D));<br />        defaultpiedataset.setValue("Two", new Double(10D));<br />        defaultpiedataset.setValue("Three", new Double(27.5D));<br />        defaultpiedataset.setValue("Four", new Double(17.5D));<br />        return defaultpiedataset;<br />    } <br />   2、由ChartFactory  产生 JFreeChart 对象<br />    private static JFreeChart createChart(PieDataset piedataset)<br />    {<br />        JFreeChart jfreechart = ChartFactory.createPieChart("Pie Chart Demo 1",  //图形标题名称<br />                                                              piedataset,   // dataset<br />                                                              true,      // legend?<br />                                                              true,     // tooltips?<br />                                                              false);  //URLs?<br />        PiePlot pieplot = (PiePlot)jfreechart.getPlot();  //通过JFreeChart 对象获得 plot：PiePlot！！<br />        pieplot.setNoDataMessage("No data available");    // 没有数据的时候显示的内容<br />        return jfreechart;<br />    } <br />    一些重要的方法：<br />    pieplot.setExplodePercent(0,0.3D) //把Lable 为"One" 的那一块”挖“出来30%    <br />   3、输出略  <br />   <br />[b]三、柱状图[/b]<br />   柱状图的dataset 一般是用CatagoryDataset接口(具体实现类是DefaultCategoryDataset),也会用 IntervalXYDataset <br />   接口<br />   1、创建一个数据源（dataset）：<br />    private static CategoryDataset createDataset()<br />    {<br />        String series1 = "First";<br />        String series2 = "Second";<br />        String series3 = "Third";<br />        String category1 = "Category 1";<br />        String category2 = "Category 2";<br />        String category3 = "Category 3";<br />        String category4 = "Category 4";<br />        String category5 = "Category 5";<br />        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();<br />        defaultcategorydataset.addValue(1.0D, series1, category1);<br />        defaultcategorydataset.addValue(4D, series1, category2);<br />        defaultcategorydataset.addValue(3D, series1, category3);<br />        defaultcategorydataset.addValue(5D, series1, category4);<br />        defaultcategorydataset.addValue(5D, series1, category5);<br />        <br />        defaultcategorydataset.addValue(5D, series2, category1);<br />        defaultcategorydataset.addValue(7D, series2, category2);<br />        defaultcategorydataset.addValue(6D, series2, category3);<br />        defaultcategorydataset.addValue(8D, series2, category4);<br />        defaultcategorydataset.addValue(4D, series2, category5);<br />        <br />        defaultcategorydataset.addValue(4D, series3, category1);<br />        defaultcategorydataset.addValue(3D, series3, category2);<br />        defaultcategorydataset.addValue(2D, series3, category3);<br />        defaultcategorydataset.addValue(3D, series3, category4);<br />        defaultcategorydataset.addValue(6D, series3, category5);<br />        return defaultcategorydataset;<br />    }<br />   2、由ChartFactory  产生 JFreeChart 对象    <br />    private static JFreeChart createChart(CategoryDataset categorydataset)<br />    {<br />        JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo", //图形标题名称<br />                                                            "Category",//domain 轴 Lable <br />                                                                         这里先简单理解为横坐标Lable好了<br />                                                            "Value", //range 轴 Lable<br />                                                                       这里也先简单理解为纵坐标Lable好了<br />                                                            categorydataset, //  dataset<br />                                                            PlotOrientation.VERTICAL, //垂直显示<br />                                                            true, // legend?<br />                                                            true,  // tooltips?<br />                                                            false); //URLs?<br />        jfreechart.setBackgroundPaint(Color.white);   //设定背景色为白色<br />        CategoryPlot categoryplot = jfreechart.getCategoryPlot(); //获得 plot：CategoryPlot！！<br />        categoryplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色<br />        categoryplot.setDomainGridlinePaint(Color.white); //横坐标网格线白色<br />        categoryplot.setDomainGridlinesVisible(true); //可见<br />        categoryplot.setRangeGridlinePaint(Color.white); //纵坐标网格线白色<br />        //下面两行使纵坐标的最小单位格为整数<br />        NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();<br />        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());<br />        BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); //获得renderer 注意这里是下嗍造型<br />                                                                             到BarRenderer！！<br />        barrenderer.setDrawBarOutline(false); // Bar的外轮廓线不画<br />        GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue, <br />        0.0F, 0.0F, new Color(0, 0, 64));   //设定特定颜色<br />        GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green, <br />        0.0F, 0.0F, new Color(0, 64, 0));<br />        GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red,<br />        0.0F, 0.0F, new Color(64, 0, 0));<br />        barrenderer.setSeriesPaint(0, gradientpaint); //给series1 Bar设定上面定义的颜色<br />        barrenderer.setSeriesPaint(1, gradientpaint1); //给series2 Bar 设定上面定义的颜色<br />        barrenderer.setSeriesPaint(2, gradientpaint2); //给series3 Bar 设定上面定义的颜色<br />        CategoryAxis categoryaxis = categoryplot.getDomainAxis();  //横轴上的 Lable 45度倾斜<br />        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);        <br />        return jfreechart;<br />    }  <br />    一些重要的方法：（增加一块标记）<br />        IntervalMarker intervalmarker = new IntervalMarker(4.5D, 7.5D);<br />        intervalmarker.setLabel("Target Range");<br />        intervalmarker.setLabelFont(new Font("SansSerif", 2, 11));<br />        intervalmarker.setLabelAnchor(RectangleAnchor.LEFT);<br />        intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);<br />        intervalmarker.setPaint(new Color(222, 222, 255, 128));<br />        categoryplot.addRangeMarker(intervalmarker, Layer.BACKGROUND);    <br />        <br />[b]四、折线图[/b]<br />   折线图的dataset 两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset 接口 <br />   1、CatagoryDataset接口：         <br />   A、创建一个数据源（dataset）： <br />    private static CategoryDataset createDataset()<br />    {<br />        String series1 = "First";<br />        String series2 = "Second";<br />        String series3 = "Third";<br />        String type1 = "Type 1";<br />        String type2 = "Type 2";<br />        String type3 = "Type 3";<br />        String type4 = "Type 4";<br />        String type5 = "Type 5";<br />        String type6 = "Type 6";<br />        String type7 = "Type 7";<br />        String type8 = "Type 8";<br />        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();<br />        defaultcategorydataset.addValue(1.0D, series1, type1);<br />        defaultcategorydataset.addValue(4D, series1, type2);<br />        defaultcategorydataset.addValue(3D, series1, type3);<br />        defaultcategorydataset.addValue(5D, series1, type4);<br />        defaultcategorydataset.addValue(5D, series1, type5);<br />        defaultcategorydataset.addValue(7D, series1, type6);<br />        defaultcategorydataset.addValue(7D, series1, type7);<br />        defaultcategorydataset.addValue(8D, series1, type8);<br />        <br />        defaultcategorydataset.addValue(5D, series2, type1);<br />        defaultcategorydataset.addValue(7D, series2, type2);<br />        defaultcategorydataset.addValue(6D, series2, type3);<br />        defaultcategorydataset.addValue(8D, series2, type4);<br />        defaultcategorydataset.addValue(4D, series2, type5);<br />        defaultcategorydataset.addValue(4D, series2, type6);<br />        defaultcategorydataset.addValue(2D, series2, type7);<br />        defaultcategorydataset.addValue(1.0D, series2, type8);<br />        <br />        defaultcategorydataset.addValue(4D, series3, type1);<br />        defaultcategorydataset.addValue(3D, series3, type2);<br />        defaultcategorydataset.addValue(2D, series3, type3);<br />        defaultcategorydataset.addValue(3D, series3, type4);<br />        defaultcategorydataset.addValue(6D, series3, type5);<br />        defaultcategorydataset.addValue(3D, series3, type6);<br />        defaultcategorydataset.addValue(4D, series3, type7);<br />        defaultcategorydataset.addValue(3D, series3, type8);<br />        return defaultcategorydataset;<br />    } <br />   B、由ChartFactory  产生 JFreeChart 对象     (与上面重复的部分就不再注释）<br />    private static JFreeChart createChart(CategoryDataset categorydataset)<br />    {<br />        JFreeChart jfreechart = ChartFactory.createLineChart("Line Chart Demo 1", <br />                                                             "Type", <br />                                                             "Value", <br />                                                             categorydataset, <br />                                                             PlotOrientation.VERTICAL, <br />                                                             true, <br />                                                             true, <br />                                                             false);<br />        jfreechart.setBackgroundPaint(Color.white);<br />        CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();<br />        categoryplot.setBackgroundPaint(Color.lightGray);<br />        categoryplot.setRangeGridlinePaint(Color.white);<br />        NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();<br />        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());<br />        numberaxis.setAutoRangeIncludesZero(true);<br />        //获得renderer 注意这里是下嗍造型到lineandshaperenderer！！<br />        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();<br />        lineandshaperenderer.setShapesVisible(true); //series 点（即数据点）可见<br />        lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {<br />            10F, 6F<br />        }, 0.0F)); //定义series为"First"的（即series1）点之间的连线 ，这里是虚线，默认是直线<br />        lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {<br />            6F, 6F<br />        }, 0.0F)); //定义series为"Second"的（即series2）点之间的连线<br />        lineandshaperenderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {<br />            2.0F, 6F<br />        }, 0.0F)); //定义series为"Third"的（即series3）点之间的连线<br />        return jfreechart;<br />    } <br />        一些重要的方法：<br />        lineandshaperenderer.setLineVisible(true)  //series 点（即数据点）间有连线可见<br />   2、XYDataset 接口：<br />   A、创建一个数据源（dataset）：<br />    private static XYDataset createDataset()<br />    {<br />        XYSeries xyseries = new XYSeries("First"); //先产生XYSeries 对象<br />        xyseries.add(1.0D, 1.0D);<br />        xyseries.add(2D, 4D);<br />        xyseries.add(3D, 3D);<br />        xyseries.add(4D, 5D);<br />        xyseries.add(5D, 5D);<br />        xyseries.add(6D, 7D);<br />        xyseries.add(7D, 7D);<br />        xyseries.add(8D, 8D);<br />        <br />        XYSeries xyseries1 = new XYSeries("Second");<br />        xyseries1.add(1.0D, 5D);<br />        xyseries1.add(2D, 7D);<br />        xyseries1.add(3D, 6D);<br />        xyseries1.add(4D, 8D);<br />        xyseries1.add(5D, 4D);<br />        xyseries1.add(6D, 4D);<br />        xyseries1.add(7D, 2D);<br />        xyseries1.add(8D, 1.0D);<br />        <br />        XYSeries xyseries2 = new XYSeries("Third");<br />        xyseries2.add(3D, 4D);<br />        xyseries2.add(4D, 3D);<br />        xyseries2.add(5D, 2D);<br />        xyseries2.add(6D, 3D);<br />        xyseries2.add(7D, 6D);<br />        xyseries2.add(8D, 3D);<br />        xyseries2.add(9D, 4D);<br />        xyseries2.add(10D, 3D);<br />        <br />        XYSeriesCollection xyseriescollection = new XYSeriesCollection(); //再用XYSeriesCollection添加入XYSeries 对象<br />        xyseriescollection.addSeries(xyseries);<br />        xyseriescollection.addSeries(xyseries1);<br />        xyseriescollection.addSeries(xyseries2);<br />        return xyseriescollection;<br />    }<br />   B、由ChartFactory  产生 JFreeChart 对象 <br />    private static JFreeChart createChart(XYDataset xydataset)<br />    {<br />        JFreeChart jfreechart = ChartFactory.createXYLineChart("Line Chart Demo 2", <br />                                                               "X", <br />                                                               "Y", <br />                                                               xydataset, <br />                                                               PlotOrientation.VERTICAL, <br />                                                               true, <br />                                                               true, <br />                                                               false);<br />        jfreechart.setBackgroundPaint(Color.white);<br />        XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //获得 plot：XYPlot！！<br />        xyplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色<br />        xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); //设定坐标轴与图表数据显示部分距离<br />        xyplot.setDomainGridlinePaint(Color.white); //网格线颜色<br />        xyplot.setRangeGridlinePaint(Color.white);<br />        //获得 renderer 注意这里是XYLineAndShapeRenderer ！！<br />        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();<br />        xylineandshaperenderer.setShapesVisible(true); //数据点可见<br />        xylineandshaperenderer.setShapesFilled(true); //数据点被填充即不是空心点<br />        NumberAxis numberaxis = (NumberAxis)xyplot.getRangeAxis();<br />        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());<br />        return jfreechart;<br />    }                      <br />   一些重要的方法：<br />        XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();<br />        xylineandshaperenderer.setSeriesLinesVisible(0, false); //第一个XYSeries数据点间连线不可见<br />        xylineandshaperenderer.setSeriesShapesVisible(1, false); //第二个XYSeries数据点不可见<br />        xyplot.setRenderer(xylineandshaperenderer);   <br />        <br />[b]五、时间序列图[/b]<br />    时间序列图和折线图很相似，不同的是它在 domain轴的数据是时间而不是数字。 时间序列图的dataset 是<br />    XYDataset 接口，具体实现类是TimeSeriesCollection ，和上面类似，有TimeSeries 对象，它被添加入<br />    TimeSeriesCollection 。                                                                               <br />  1、创建一个数据源（dataset）：<br />    private static XYDataset createDataset()<br />    {<br />        TimeSeries timeseries = new TimeSeries("L&amp;G European Index Trust",Month.class);<br />        timeseries.add(new Month(2, 2001), 181.8D);//这里用的是Month.class，同样还有Day.class Year.class 等等<br />        timeseries.add(new Month(3, 2001), 167.3D);<br />        timeseries.add(new Month(4, 2001), 153.8D);<br />        timeseries.add(new Month(5, 2001), 167.6D);<br />        timeseries.add(new Month(6, 2001), 158.8D);<br />        timeseries.add(new Month(7, 2001), 148.3D);<br />        timeseries.add(new Month(8, 2001), 153.9D);<br />        timeseries.add(new Month(9, 2001), 142.7D);<br />        timeseries.add(new Month(10, 2001), 123.2D);<br />        timeseries.add(new Month(11, 2001), 131.8D);<br />        timeseries.add(new Month(12, 2001), 139.6D);<br />        timeseries.add(new Month(1, 2002), 142.9D);<br />        timeseries.add(new Month(2, 2002), 138.7D);<br />        timeseries.add(new Month(3, 2002), 137.3D);<br />        timeseries.add(new Month(4, 2002), 143.9D);<br />        timeseries.add(new Month(5, 2002), 139.8D);<br />        timeseries.add(new Month(6, 2002), 137D);<br />        timeseries.add(new Month(7, 2002), 132.8D);<br />        <br />        TimeSeries timeseries1 = new TimeSeries("L&amp;G UK Index Trust",Month.class);<br />        timeseries1.add(new Month(2, 2001), 129.6D);<br />        timeseries1.add(new Month(3, 2001), 123.2D);<br />        timeseries1.add(new Month(4, 2001), 117.2D);<br />        timeseries1.add(new Month(5, 2001), 124.1D);<br />        timeseries1.add(new Month(6, 2001), 122.6D);<br />        timeseries1.add(new Month(7, 2001), 119.2D);<br />        timeseries1.add(new Month(8, 2001), 116.5D);<br />        timeseries1.add(new Month(9, 2001), 112.7D);<br />        timeseries1.add(new Month(10, 2001), 101.5D);<br />        timeseries1.add(new Month(11, 2001), 106.1D);<br />        timeseries1.add(new Month(12, 2001), 110.3D);<br />        timeseries1.add(new Month(1, 2002), 111.7D);<br />        timeseries1.add(new Month(2, 2002), 111D);<br />        timeseries1.add(new Month(3, 2002), 109.6D);<br />        timeseries1.add(new Month(4, 2002), 113.2D);<br />        timeseries1.add(new Month(5, 2002), 111.6D);<br />        timeseries1.add(new Month(6, 2002), 108.8D);<br />        timeseries1.add(new Month(7, 2002), 101.6D);<br />        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();<br />        timeseriescollection.addSeries(timeseries);<br />        timeseriescollection.addSeries(timeseries1);<br />        timeseriescollection.setDomainIsPointsInTime(true); //domain轴上的刻度点代表的是时间点而不是时间段<br />        return timeseriescollection;<br />    }<br />   2、由ChartFactory  产生 JFreeChart 对象 <br />    private static JFreeChart createChart(XYDataset xydataset)<br />    {<br />        JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("Legal &amp; General Unit Trust Prices", <br />                                                                   "Date", <br />                                                                   "Price Per Unit", <br />                                                                   xydataset, <br />                                                                   true, <br />                                                                   true, <br />                                                                   false);<br />        jfreechart.setBackgroundPaint(Color.white);<br />        XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //获得 plot : XYPlot!!<br />        xyplot.setBackgroundPaint(Color.lightGray);<br />        xyplot.setDomainGridlinePaint(Color.white);<br />        xyplot.setRangeGridlinePaint(Color.white);<br />        xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));<br />        xyplot.setDomainCrosshairVisible(true);<br />        xyplot.setRangeCrosshairVisible(true);<br />        org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.getRenderer();<br />        if(xyitemrenderer instanceof XYLineAndShapeRenderer)<br />        {<br />            XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyitemrenderer;<br />            xylineandshaperenderer.setDefaultShapesVisible(true); //数据点可见<br />            xylineandshaperenderer.setDefaultShapesFilled(true);  //数据点是实心点<br />        }<br />        DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis(); //对domain 轴上日期显示格式定义<br />        dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));<br />        return jfreechart;<br />    }  <br />       一些重要的方法：<br />     A、增加标记线： <br />        xyplot.addRangeMarker(new ValueMarker(550D)); //数值轴<br />        Quarter quarter = new Quarter(2, 2002);<br />        xyplot.addDomainMarker(new ValueMarker(quarter.getMiddleMillisecond()));  //时间轴<br />     B、数据点的调整<br />        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();<br />        xylineandshaperenderer.setDefaultShapesVisible(true);  //数据点可见<br />        xylineandshaperenderer.setSeriesFillPaint(0, Color.red);  //数据点填充为红色<br />        xylineandshaperenderer.setSeriesFillPaint(1, Color.white);  //数据点填充为白色<br />        xylineandshaperenderer.setUseFillPaint(true);    //应用<br />     C、平均值曲线 <br />       这个曲线有什么用呢？很简单的例子，这里有一个以半年每天为单位的数据绘制的曲线，我们想看看以月为单位数据<br />       的变化，这时就可以用到它了。 <br />        TimeSeries timeseries = createEURTimeSeries();  //就是以半年每天为单位的数据<br />        TimeSeries timeseries1 = MovingAverage.createMovingAverage(timeseries, <br />                                                                   "30 day moving average", <br />                                                                   30, //30天为一个周期<br />                                                                   30); //最开始的30天跳过<br />        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();<br />        timeseriescollection.addSeries(timeseries);<br />        timeseriescollection.addSeries(timeseries1);<br />        return timeseriescollection; <br />     <br />[b]六、总结一下[/b]<br />                           dataset                          plot                    renderer                       <br />  饼图           PieDataset（DefaultPieDataset）           PiePlot                    ------<br />  柱状图    CatagoryDataset（DefaultCategoryDataset）    CategoryPlot                BarRenderer<br />  折线图    CatagoryDataset（DefaultCategoryDataset）    CategoryPlot              LineAndShapeRenderer<br />                  XYDataset（XYSeriesCollection）           XYPlot                XYLineAndShapeRenderer<br />  时间序列图     XYDataset （TimeSeriesCollection）         XYPlot                XYLineAndShapeRenderer<br />  这里只是一些常用的方法，具体还是看API ,主要的类总结如下：<br />JFreeChart:生成图表的中间存放类。</p>
		<div>CategoryDataSet:图表的数据，主要包含行数据（String[] 类型），列数据(String[] 类型）和主数据                    (double[][]类型）。一般来说简单的图表主数据都是double[1][]类型的。</div>
		<div>ChartFactory: 工厂类，提供多种方法生成多达30多种图表，用得比较多的是BarChart(柱状图),LineChart             （折线图），PieChart（饼状图）。工厂方法看起来比较统一：creatXXXChart(图表标题，              行标题，列标题，主数据（CategoryDataSet）)</div>
		<div>ChartUtities: 公用类，提供各种持久保存图表数据的方法，比如saveChartAsJPEG(File，                             JFreeChart,width,height)</div>
		<div>其他还有一些渲染类，主要是用来美化图表界面，调整和优化显示风格等。</div>
		<div>总的来说还不错，比jasperReport要简单，上手很快，图表效果也还不错，用来做普通数据图表足够了</div>
		<p>
				<br />
				<br />[b]七、Item Lable[/b] <br />   这里以柱状图为例说明，具体来说就是在每个柱状上显示它的数据，具体有下面内容：<br />   A、使 Item Lable 可见<br />   B、调整 Item Lable 的颜色、字体等<br />   C、调整 Item Lable 的位置<br />   D、定制 Item Lable 的内容<br />   1、分配一个 Lable Generator 给 renderer<br />      BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();<br />      GategoryLableGenerator generator =new StandardGategoryLableGenerator(<br />           "{2}", new DecimalFormat("0.00")    //调整显示的数字和字符格式<br />      );<br />      barrenderer.setLableGenerator(generator);<br />   2、使 Item Lable 可见<br />      barrenderer.setItemLableVisible(true);<br />   3、调整 Item Lable 的颜色、字体等<br />      barrenderer.setItemLablePaint(Color.red);<br />      barrenderer.setItemLableFont(new Font("SansSerif",Font.PLAIN,10));<br />   4、调整 Item Lable 的位置<br />      这里涉及到一个新的对象 ItemLablePosition , ItemLablePosition的构造函数有两个或四个参数<br />      public ItemLabelPosition(ItemLabelAnchor itemLabelAnchor,<br />                         org.jfree.ui.TextAnchor textAnchor,<br />                         org.jfree.ui.TextAnchor rotationAnchor,<br />                         double angle)<br />      itemLabelAnchor - Item Lable 的位置 （最重要的！！）<br />      textAnchor - Item Lable里包含的正文相对于Item Lable 的位置<br />      rotationAnchor - Item Lable里包含的正文旋转的位置<br />      angle - 旋转的角度<br />      ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE12, <br />                                                      TextAnchor.CENTER_RIGHT, <br />                                                      TextAnchor.CENTER_RIGHT, <br />                                                      -1.57D);<br />      barrenderer.setPositiveItemLabelPosition(itemlabelposition); <br />   这样就可以每个柱状上显示它的数据了，当然可以定制 Item Lable 的内容，比如 Item Lable text 超过100的才<br />   显示，这样就需要定制自己的类，它要实现GategoryLableGenerator 接口，实现generateItemLable()方法。</p>
<img src ="http://www.blogjava.net/weibogao/aggbug/57622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/weibogao/" target="_blank">weibogao</a> 2006-07-11 11:31 <a href="http://www.blogjava.net/weibogao/archive/2006/07/11/57622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 常用代码大全(转载)</title><link>http://www.blogjava.net/weibogao/archive/2006/04/28/43706.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Fri, 28 Apr 2006 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/weibogao/archive/2006/04/28/43706.html</guid><wfw:comment>http://www.blogjava.net/weibogao/comments/43706.html</wfw:comment><comments>http://www.blogjava.net/weibogao/archive/2006/04/28/43706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/weibogao/comments/commentRss/43706.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/weibogao/services/trackbacks/43706.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: javascript 常用代码大全 																				//打开模式对话框 function doSelectUser(txtId) { 						      strFeatures="dialogWidth=500px;dialogHeight=360px;center=yes;middle=yes ;help=no;status=no;scroll...&nbsp;&nbsp;<a href='http://www.blogjava.net/weibogao/archive/2006/04/28/43706.html'>阅读全文</a><img src ="http://www.blogjava.net/weibogao/aggbug/43706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/weibogao/" target="_blank">weibogao</a> 2006-04-28 09:23 <a href="http://www.blogjava.net/weibogao/archive/2006/04/28/43706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCKeditor在线编辑器的使用(转载)</title><link>http://www.blogjava.net/weibogao/archive/2006/04/25/42961.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Tue, 25 Apr 2006 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/weibogao/archive/2006/04/25/42961.html</guid><wfw:comment>http://www.blogjava.net/weibogao/comments/42961.html</wfw:comment><comments>http://www.blogjava.net/weibogao/archive/2006/04/25/42961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/weibogao/comments/commentRss/42961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/weibogao/services/trackbacks/42961.html</trackback:ping><description><![CDATA[
		<div align="center">
				<font face="黑体" color="#333333" size="4">FCKeditor在线编辑器的使用(转载)</font>
		</div>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td valign="top" width="402">
										<div align="left">
												<p align="left">试用了一下FCKeditor,根据网上的文章小结一下：<br />1.下载<br />FCKeditor.java 2.3 (FCKeditot for java)<br />FCKeditor 2.2 (FCKeditor基本文件)</p>
												<p>2.建立项目:tomcat/webapps/TestFCKeditor.</p>
												<p>3.将FCKeditor2.2解压缩,将整个目录FCKeditor复制到项目的根目录下，<br />目录结构为：tomcat/webapps/TestFCKeditor/FCKeditor<br />然后将FCKeditor-2.3.zip（java）压缩包中\web\WEB-INF\lib\目录下的两个jar文件拷到项目的\WEB-INF\lib\目录下。把其中的src目录下的FCKeditor.tld文件copy到TestFCKedit/FCKeitor/WEB-INF/下</p>
												<p>4.将FCKeditor-2.3.zip压缩包中\web\WEB-INF\目录下的web.xml文件合并到项目的\WEB-INF\目录下的web.xml文件中。</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
		<p>5. 修改合并后的web.xml文件，将名为SimpleUploader的Servlet的enabled参数值改为true，<br />以允许上传功能，Connector Servlet的baseDir参数值用于设置上传文件存放的位置。<br />添加标签定义:<br />&lt;taglib&gt;<br />&lt;taglib-uri&gt;/TestFCKeditor&lt;/taglib-uri&gt;<br />&lt;taglib-location&gt;/WEB-INF/FCKeditor.tld&lt;/taglib-location&gt;<br />&lt;/taglib&gt;</p>
		<p>运行图：</p>
		<p>
				<img height="457" src="http://www.java3z.com/cwbwebhome/article/article1/images/fckeditor.gif" width="550" />
		</p>
		<p>6. 上面文件中两个servlet的映射分别为：/editor/filemanager/browser/default/connectors/jsp/connector<br />和/editor/filemanager/upload/simpleuploader，需要在两个映射前面加上/FCKeditor，<br />即改为/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector和<br />/FCKeditor/editor/filemanager/upload/simpleuploader。</p>
		<p>7.进入skin文件夹，如果你想使用fckeditor默认的这种奶黄色，<br />那就把除了default文件夹外的另两个文件夹直接删除.</p>
		<p>8.删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文件以外的所有文件 <br />删除目录/editor/_source,<br />删除/editor/filemanager/browser/default/connectors/下的所有文件<br />删除/editor/filemanager/upload/下的所有文件<br />删除/editor/lang/下的除了fcklanguagemanager.js, en.js, zh.js, zh-cn.js四个文件的所有文件</p>
		<p>9.打开/FCKeditor/fckconfig.js<br />修改 FCKConfig.DefaultLanguage = 'zh-cn' ; <br />把FCKConfig.LinkBrowserURL等的值替换成以下内容：<br />FCKConfig.LinkBrowserURL<br />= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;<br /><br />FCKConfig.ImageBrowserURL<br />= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&amp;Connector=connectors/jsp/connector" ;<br /><br />FCKConfig.FlashBrowserURL<br />= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&amp;Connector=connectors/jsp/connector" ;</p>
		<p>
				<br />FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;<br />FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;<br />FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;<br /></p>
		<p>10.其它<br />fckconfig.js总配置文件，可用记录本打开，修改后将文件存为utf-8 编码格式。找到：</p>
		<p>FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。</p>
		<p>如果你的编辑器还用在网站前台的话，比如说用于留言本或是日记回复时，那就不得不考虑安全了，<br />在前台千万不要使用Default的toolbar，要么自定义一下功能，要么就用系统已经定义好的Basic，<br />也就是基本的toolbar，找到：<br />FCKConfig.ToolbarSets["Basic"] = [<br />['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',<br />'Smiley','SpecialChar','Replace','Preview'] ] ;<br />这是改过的Basic，把图像功能去掉，把添加链接功能去掉，因为图像和链接和flash和图像按钮添加功能都能让前台<br />页直接访问和上传文件， fckeditor还支持编辑域内的鼠标右键功能。<br /><br />FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',<br />/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;<br /><br />这也是改过的把鼠标右键的“链接、图像，FLASH，图像按钮”功能都去掉。</p>
		<p>　　找到： FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;<br />加上几种我们常用的字体 <br />FCKConfig.FontNames <br />= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;<br /></p>
		<p>7.添加文件 /TestFCKeditor/test.jsp:<br />&lt;%@ page language="java" import="com.fredck.FCKeditor.*" %&gt;<br />&lt;%@ taglib uri="/TestFCKeditor" prefix="FCK" %&gt;<br />&lt;script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"&gt;&lt;/script&gt;</p>
		<p>&lt;%--<br />三种方法调用FCKeditor<br />1.FCKeditor自定义标签 (必须加头文件 &lt;%@ taglib uri="/TestFCKeditor" prefix="FCK" %&gt; )<br />2.script脚本语言调用 (必须引用 脚本文件 &lt;script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"&gt;&lt;/script&gt; )<br />3.FCKeditor API 调用 (必须加头文件 &lt;%@ page language="java" import="com.fredck.FCKeditor.*" %&gt; )<br />--%&gt;<br /><br />&lt;%--<br />&lt;form action="show.jsp" method="post" target="_blank"&gt;<br />&lt;FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"<br />width="700"<br />height="500"<br />skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"<br />toolbarSet = "Default"<br />&gt;<br />input<br />&lt;/FCK:editor&gt;<br />&lt;input type="submit" value="Submit"&gt;<br />&lt;/form&gt;<br />--%&gt;</p>
		<p>&lt;form action="show.jsp" method="post" target="_blank"&gt;<br />&lt;table border="0" width="700"&gt;&lt;tr&gt;&lt;td&gt;<br />&lt;textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px"&gt;input&lt;/textarea&gt;<br />&lt;script type="text/javascript"&gt;<br />var oFCKeditor = new FCKeditor('content') ;<br />oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;<br />oFCKeditor.Height = 400;<br />oFCKeditor.ToolbarSet = "Default" ; <br />oFCKeditor.ReplaceTextarea();<br />&lt;/script&gt;<br />&lt;input type="submit" value="Submit"&gt;<br />&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />&lt;/form&gt;</p>
		<p>&lt;%--<br />&lt;form action="show.jsp" method="post" target="_blank"&gt;<br />&lt;%<br />FCKeditor oFCKeditor ;<br />oFCKeditor = new FCKeditor( request, "content" ) ;<br />oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;<br />oFCKeditor.setValue( "input" );<br />out.println( oFCKeditor.create() ) ;<br />%&gt;<br />&lt;br&gt;<br />&lt;input type="submit" value="Submit"&gt;<br />&lt;/form&gt;<br />--%&gt;<br /></p>
		<p>添加文件/TestFCKeditor/show.jsp:<br />&lt;%<br />String content = request.getParameter("content");<br />out.print(content);<br />%&gt;</p>
		<p>8.浏览http://localhost:8080/TestFCKeditor/test.jsp<br />ok!<br /></p>
<img src ="http://www.blogjava.net/weibogao/aggbug/42961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/weibogao/" target="_blank">weibogao</a> 2006-04-25 10:34 <a href="http://www.blogjava.net/weibogao/archive/2006/04/25/42961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>·[转帖]DWR学习     -|忧忧 发表于 2006-3-22 10:23:00 </title><link>http://www.blogjava.net/weibogao/archive/2006/04/01/38615.html</link><dc:creator>weibogao</dc:creator><author>weibogao</author><pubDate>Sat, 01 Apr 2006 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/weibogao/archive/2006/04/01/38615.html</guid><wfw:comment>http://www.blogjava.net/weibogao/comments/38615.html</wfw:comment><comments>http://www.blogjava.net/weibogao/archive/2006/04/01/38615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/weibogao/comments/commentRss/38615.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/weibogao/services/trackbacks/38615.html</trackback:ping><description><![CDATA[
		<font size="1">
				<span class="oblog_text">http://getahead.ltd.uk/dwr/ <br />这段时间较闲,研究了一番dwr.发现dwr实现的AJAX有些地方确实很是先进.比如动态生成javascript代码;隐藏的http协议;javascript于java代码交互的是javascript对象(或字符串)等. <br />以下是我临时译的一些东西.本来想全译,发现dwr实在是简单,就随便写了.英文居差,现一把. <br /><br />1、DWR: Easy AJAX for JAVA <br /><br />作为一个java open source library,DWR可以帮助开发人员完成应用AJAX技术的web程序。它可以让浏览器上的javascript方法调用运行在web服务器上java方法。 <br /><br />DWR主要由两部门组成。javascript与web服务器通信并更新web页；运行在web服务器的Servlet处理请求并把响应发回浏览器。 <br /><br />DWR采用新颖的方法实现了AJAX(本来也没有确切的定义)，在java代码基础上动态的生成javascript代码。web开发者可以直接调用这些javascript代码，然而真正的代码是运行在web服务器上的java code。出与安全考虑，开发者必须配置哪些java class暴露给DWR.(dwr.xml) <br /><br />这种从(java到javascript)调用机制给用户一种感觉，好象常规的RPC机制，或RMI or SOAP.但是它运行在web上，不需要任何浏览器插件。 <br /><br />DWR不认为浏览器和web服务器之间协议重要，把系统界面放在首位。最大挑战是java method call的同步特征与ajax异步特性之间的矛盾。在异步模型里，结果只有在方法结束后才有效。DWR解决了这个问题，把回调函数当成参数传给方法，处理完成后，自动调用回调方法。 <br /><br />这个图表显示了，通过javascript事件，DWR能改变select的内容，当然这些内容由java代码返回。 javascript函数Data.getOptions(populateList)由DWR动态生成，这个函数会调用java class Data类的方法。DWR处理如何远程调用，包括转换所有的参数和返回的结果（javascript\java）。java方法执行完后，执行回调方法populateList。在整个过程中我们就想在用本地的方法一样。 <br /><br />2、Getting Started <br /><br />废话少说，试试就ok了。 <br />web.xml <br /><br />&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; <br />&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt; <br /><br />&lt;web-app id="dwr"&gt; <br />&lt;servlet&gt; <br />&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt; <br />&lt;/servlet&gt; <br />&lt;servlet-mapping&gt; <br />&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />&lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt; <br />&lt;/web-app&gt; <br /><br />dwr.xml 与web.xml同目录 <br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt; <br />&lt;dwr&gt; <br />&lt;allow&gt; <br />&lt;create creator="new" javascript="JDate"&gt; <br />&lt;param name="class" value="/java.util.Date"/&gt; <br />&lt;/create&gt; <br />&lt;/allow&gt; <br />&lt;/dwr&gt; <br /><br />index.html <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;DWR - Test Home&lt;/title&gt; <br />&lt;script type='text/javascript' src="/dwr/interface/JDate.js"&gt;&lt;/script&gt; <br />&lt;script type='text/javascript' src="/dwr/engine.js"&gt;&lt;/script&gt; <br />&lt;script&gt; <br />function init(){ <br />JDate.getYear(load); <br />} <br />function load(data){ <br />alert(data+1900+'年') <br />} <br />&lt;/script&gt; <br />&lt;/head&gt; <br />&lt;body onload="init()"&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />dwr.jar 下载放lib下 <br /><br />完了，什么，够了，就这些。访问ok! <br />3、Examples <br />http://www.aboutmyhealth.org/ 这不是Google Suggest吗!ok. <br />4、源码浅析 <br />dwr的设计很象webwork2的设计,隐藏http协议,扩展性，兼容性及强。 <br /><br />通过研究uk.ltd.getahead.dwr.DWRServlet这个servlet来研究下dwr到底是如何工作滴。 <br /><br />java代码:  <br /><br />web.xml配置 <br />&lt;servlet&gt; <br />    &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />    &lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt; <br />  &lt;/servlet&gt; <br />  &lt;servlet-mapping&gt; <br />    &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />    &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt;<br /><br /><br />这样所有的/dwr/*所有请求都由这个servlet来处理，它到底处理了些什么能。我们还以上面最简单的例子来看。 <br />1、 web服务器启动，DWRServlet init()方法调用，init主要做了以下工作。 <br />设置日志级别、实例化DWR用到的单例类（这些类在jvm中只有一个实例对象）、读去配置文件（包括dwr.jar包中的dwr.xml,WEB-INF/dwr.xml. config*.xml）。 <br />2、请求处理 <br />DWRServlet.doGet, doPost方法都调用processor.handle(req, resp)方法处理。Processor对象在init()方法中已经初始化了。 <br />java代码:  <br /><br />public void handle(HttpServletRequest req, HttpServletResponse resp) <br />        throws IOException <br />    { <br />        String pathinfo = req.getPathInfo(); <br />        if(pathinfo == null || pathinfo.length() == 0 || pathinfo.equals("/")) <br />        { <br />            resp.sendRedirect(req.getContextPath() + req.getServletPath() + '/' + "index.html"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/index.html")) <br />        { <br />            doIndex(req, resp); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.startsWith("/test/")) <br />        { <br />            doTest(req, resp); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/engine.js")) <br />        { <br />            doFile(resp, "engine.js", "text/javascript"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/util.js")) <br />        { <br />            doFile(resp, "util.js", "text/javascript"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/deprecated.js")) <br />        { <br />            doFile(resp, "deprecated.js", "text/javascript"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.startsWith("/interface/")) <br />        { <br />            doInterface(req, resp); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.startsWith("/exec")) <br />        { <br />            doExec(req, resp); <br />        } else <br />        { <br />            log.warn("Page not found. In debug/test mode try viewing /[WEB-APP]/dwr/"); <br />            resp.sendError(404); <br />        } <br />    }<br /><br /><br />哦。这些恍然大悟。dwr/*处理的请求也就这几种。 <br />（1）dwr/index.html，dwr/test/这种只能在debug模式下使用，调试用。 <br />dwr/engine.js，dwr/util.js，dwr/deprecated.js当这个请求到达，从dwr.jar包中读取文件流，响应回去。（重复请求有缓存） <br />（2）当dwr/interface/这种请求到来，（例如我们在index.html中的 &lt;script type='text/javascript' src="/dwr/interface/JDate.js"&gt;&lt;/script&gt;）DWR做一件伟大的事。把我们在WEB-INF/dwr.xml中的 <br />&lt;create creator="new" javascript="JDate"&gt; <br />&lt;param name="class" value="/java.util.Date"/&gt; <br />&lt;/create&gt; <br />java.util.Date转化为javascript函数。 <br />http://localhost:port/simpledwr/dwr/interface/JDate.js看看吧。 <br />细节也比较简单，通过java反射，把方法都写成javascript特定的方法。（我觉得这些转换可以放到缓存里，下次调用没必要再生成一遍，不知道作者为什么没这样做）。 <br />（3）dwr/exec <br />javascript调用方法时发送这种请求，可能是XMLHttpRequest或IFrame发送。 <br />当然，javascript调用的方法签名与java代码一致，包括参数，还有javascript的回调方法也传到了服务器端，在服务器端很容易实现。回调方法的java的执行结果 返回类似 &lt;script&gt;callMethod(结果)&lt;script&gt;的javascript字符串,在浏览器执行。哈，一切就这么简单，巧妙。 <br /><br />dwr的设计构思很是巧妙。 <br />第一、把java类转化为javascript类由dwr自动完成，只需简单的配置。 <br />第二、应用起来极其简单。开发者不要该服务器代码就可以集成。 <br />第三、容易测试。和webwork一样，隐藏的http协议。 <br />第四、及强扩展性。例如与spring集成，只需修改一点代码。 <br />第五、性能。就我与jason,等简单比较，dwr性能可能是最好的。</span>
		</font>
<img src ="http://www.blogjava.net/weibogao/aggbug/38615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/weibogao/" target="_blank">weibogao</a> 2006-04-01 16:30 <a href="http://www.blogjava.net/weibogao/archive/2006/04/01/38615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>