2010年11月20日

在ubuntu下安装java环境: 1、jdk安装: (1)下载jdk:java_ee_sdk-5_01-linux.bin 下载地址 http://java.sun.com/javase/downloads/index_jdk5.jsp (2)启动ubuntu操作系统 (3)用winscp把java_ee_sdk-5_01-linux.bin拷贝到 ubuntu 的/home/wonderful(wonderful是我的用户目录) (4)打开Ubuntu终端,运行命令,切换到超级用户。 (5)cd命令 切换到/home/wonderful 目录下 (6)运行 cp java_ee_sdk-5_01-linux.bin /usr/local ,将jdk复制到/usr/local目录下。 (7)cd命令 切换到/usr/local目录下 (8)运行 chmod a+x java_ee_sdk-5_01-linux.bin 给予相应的权限 (9)./java_ee_sdk-5_01-linux.bin,程序运行(程序默认装在opt/SDK/jdk下) (10)如果报错:error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory。 解决方法:在/usr/lib下面发现有 /usr/lib/libstdc++.so.6.0.3于是运行 ln -s /usr/lib/libstdc++.so.6.0.3 /usr/lib/libstdc++.so.5 创建一个符合连接,这个错误信息没有了。 (11)设置Linux的全局环境变量(需要root权限),修改/etc/profile,root超级用户下 具体命令: su root(输入密码后,具有超级用户权限) vi /etc/profile(编辑profile环境变量文件) 加入: JAVA_HOME=/opt/SDK/jdk PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH JAVA_HOME CLASSPATH 在insert不能修改的情况下:按“shift+:”进入命令输入格式,输入命令w(保存) ctrl+z回到命令窗口 (12)运行source /etc/profile,激活java (13)java -version查看java版本,看是否配置合适。 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b03) Java HotSpot(TM) Client VM (build 1.5.0_09-b03, mixed mode) 2、jboss安装: (1)jboss在windows和ubuntu平台兼容。直接可以把windows下运行正常的jboss放到ubuntu下。 (2)把jboss(文件夹名为jboss4)放到,ubuntu的 /opt/jboss目录下,把sys_config_jboss.xml放到 ,ubuntu的 /opt/jboss/sysHome目录下。(sysHome为新建目录) (3)修改 /etc/profile 文件。在文件最后增加jboss环境变量。 JBOSS_HOME=/opt/jboss/jboss4 PATH=$PATH:/opt/jboss/jboss4/bin export JBOSS_HOME PATH (4)把工程的三个ggjgWebApp.war、HBSAR.sar、GGJGEJB.jar放到jboss的deploy下。其中 ggjgWebApp.war和GGJGEJB.jar的sys_init.properties中的sysHome属性指向/opt/jboss /sysHome。 (5)启动jboss,在jboss4的bin目录下运行:./run.sh
posted @ 2010-11-20 08:28 hhcto 阅读(1108) | 评论 (0)编辑 收藏
 
搞了很久, 终于把DB2 Express-C给装在了Linux虚 拟机上。 我用的虚拟机是VirtualBox3.0.4, SUN出品, 只有80M左右, 嘿嘿, 用起来很方便,在虚拟机上装过增强工具以后, 虚拟机的屏幕分辨率就会自动调整, 自动适应。 和VMWare庞大的体积比起来, 小巧了很多哦。 至于功能和性能, 我是没感觉出有啥区别来。
    继续说咱们的DB2。准备工作就去去IBM下载安装包和语言包。db2exc_970_LNX_x86.tar.gzdb2exc_nlpack_970_LNX_x86.tar.gz。 
    下面开始安装:
  1. tar -xvzf db2exc_970_LNX_x86.tar.gz
    tar -xvzf db2exc_nlpack_970_LNX_x86.tar.gz

    网上说, 可以解压到同一个目录里面, 自动整合, 这个我没有试验, 今天晚上试试。
  2. 这个时候, 如果执行db2setup的话, 会报少一个包. The required library file libaio.so.1 is not found on the system.
    Ubuntu的好处体现出来了,sudo apt-get install libaio1 安装缺少的包。
    其实我第一次安装的是libaio, apt-get提示我说不可用, 可以用libaio1替代。
    安装完依赖包, 就可以用db2setup来安装了。 因为Ubuntu一般不允许root登陆, 为了方便, 我用我的用户安装的。 用root权限安装的话, 会安装到/opt/ibm/db2下面, 用普通用户的话, 会安装的用户目录。

    嗯, 高手也可以用db2-install命令行模式安装。 其实期间没有交互信息的, 哪个都行。

    安装的过程, 就不细说了, 一路next过来的。
  3. 安装结束以后, 得记着, 要运行安装目录下的db2profile, 添加环境变量。. /home/richar/sqllib/db2profile 自己看清楚目录哦。
  4. 执行结束, 运行db2start命令, 它报给我个错:
    SQL1220NThedatabasemanagersharedmemorysetcannotbeallocated.

    网上搜了些资料, 说是共享缓存不足, 具体原理我也不清楚了。 用sysctl kernel.shmmax命令查看了共享内存。kernel.shmmax=33554432(32MB), 设置成256M
    echo 268435456 > /proc/sys/kernel/shmmax

    之后再次执行db2start, 启动成功。
    到次, 安装就结束了。 语言包的没写, 因为安装更简单, 直接db2setup就可以了, 根据提示, 很简单的。
    后续的配置, 使用, 下篇文章, 我们再介绍。

tar -xvzf db2exc_970_LNX_x86.tar.gz tar -xvzf db2exc_nlpack_970_LNX_x86.tar.gz

本文出自 “立子” 博客,请务必保留此出处http://leaze.blog.51cto.com/83088/195583

posted @ 2010-11-20 08:12 hhcto 阅读(709) | 评论 (0)编辑 收藏
 
解决qq崩溃问题,首先在终端输入:sudo gedit /usr/bin/qq 将弹出来的代码修改为以下代码: #!/bin/sh export GDK_NATIVE_WINDOWS=true cd /usr/share/tencent/qq/ ./qq 这样QQ就不会 崩溃了
posted @ 2010-11-20 08:02 hhcto 阅读(269) | 评论 (0)编辑 收藏

2008年7月7日

网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考虑流量的话,大可以像pconline一样每个页面只显示一张图片,让用户每看一张图片就需要重新下载一下整个页面。不过,在web2.0时代,更多人愿意用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片。

知道了一张图片的地址,需要把它在一个固定大小的html容器(可以是div等)里边显示出来,最重要的当然是需要知道这张即将显示的图片的宽和高,然后再结合容器的宽和高,按照一定的缩放比例使图片显示出来。因此,实现图片预加载就成为图片浏览器的核心功能了。

做过图片翻转效果的朋友其实都知道,要让图片轮换的时候不出现等待,最好是先让图片下载到本地,让浏览器缓存起来。这时,一般都会用到js里边的Image对象。一般的手段无非这样:
function preLoadImg(url) {
  var img = new Image();
  img.src = url;
}
通过调用preLoadImg函数,传入图片的url,就能使图片预先下载下来了。实际上,这里用到的预下载功能也和这基本一致。图片预下载下来后,通过 img的width和height属性,就能知道图片的宽和高了。但是需要考虑到,在做图片浏览器功能时,图片都是实时显示的。比如你点了显示的按钮,这个时候才会调用上边类似的代码来加载图片。因此,如果你直接用img.width的时候,图片还没有完全下载下来。因此,需要用一些异步的方法,等到图片下载完毕的时候才会再对img的width和height进行调用。

实现这样的异步方法实际上不难,图片的下载完毕事件也很简单,就是简单的onload事件。因此,我们可以写出下面的代码:
function loadImage(url, callback) {
  var img = new Image();
  img.src = url;

  img.onload = function(){ //图片下载完毕时异步调用callback函数。
    callback.call(img);   // 将callback函数this指针切换为img。
  };
}

好了,再来写一个测试用例。
function imgLoaded(){
  alert(this.width);
}
<input type="button" value="loadImage" onclick="loadImage('aaa.jpg',imgLoaded)"/>

在firefox中测试一下,发现不错,果然和预想的效果一样,在图片下载后,就会弹出图片的宽度来。无论点击多少次或者刷新结果都一样。

不过,做到这一步,先别高兴太早——还需要考虑一下浏览器的兼容性,于是,赶紧到ie里边测试一下。没错,同样弹出了图片的宽度。但是,再点击load的时候,情况就不一样了,什么反应都没有了。刷新一下,也同样如此。

经过对多个浏览器版本的测试,发现ie6、opera都会这样,而firefox和safari则表现正常。其实,原因也挺简单的,就是因为浏览器的缓存了。当图片加载过一次以后,如果再有对该图片的请求时,由于浏览器已经缓存住这张图片了,不会再发起一次新的请求,而是直接从缓存中加载过来。对于 firefox和safari,它们视图使这两种加载方式对用户透明,同样会引起图片的onload事件,而ie和opera则忽略了这种同一性,不会引起图片的onload事件,因此上边的代码在它们里边不能得以实现效果。

怎么办呢?最好的情况是Image可以有一个状态值表明它是否已经载入成功了。从缓存加载的时候,因为不需要等待,这个状态值就直接是表明已经下载了,而从http请求加载时,因为需要等待下载,这个值显示为未完成。这样的话,就可以搞定了。

经过一些分析,终于发现一个为各个浏览器所兼容的Image的属性——complete。所以,在图片onload事件之前先对这个值做一下判断即可。最后,代码变成如下的样子:
function loadImage(url, callback) {
    var img = new Image(); //创建一个Image对象,实现图片的预下载
    img.src = url;
  
    if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
        callback.call(img);
        return; // 直接返回,不用再处理onload事件
    }

    img.onload = function () { //图片下载完毕时异步调用callback函数。
        callback.call(img);//将回调函数的this替换为Image对象
    };
};
经过这么一番折腾,总算是让各个浏览器都能满足我们的目标了。虽然代码很简单,但是却把图片浏览器中最核心的问题解决掉了,接下来你所要做的,仅仅是图片如何呈现的问题了。

posted @ 2008-07-07 16:32 hhcto 阅读(4251) | 评论 (4)编辑 收藏

2008年6月14日

常用JDBC连接字符串

常用JDBC连接字符串
1.MySQL

代码:
Class.forName(  " org.gjt.mm.mysql.Driver "  );
Connection conn  =  DriverManager.getConnection(  " jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName " , sUsr, sPwd );
2.Microsoft SQLServer

代码:
Class.forName(  " com.microsoft.jdbc.sqlserver.SQLServerDriver "  );
Connection conn  =  DriverManager.getConnection(  " jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master " , sUsr, sPwd );
3.Oracle

代码:
Class.forName(  " oracle.jdbc.driver.OracleDriver "  );
Connection conn  =  DriverManager.getConnection ("jdbc: oracle:thin: @MyDbComputerNameOrIP:1521: ORCL " , sUsr, sPwd );
4.DB2

代码:
Class.forName( " com.ibm.db2.jdbc.net.DB2Driver " );
String url = " jdbc:db2://192.9.200.108:6789/SAMPLE "
Connection conn  =  DriverManager.getConnection( url, sUsr, sPwd );
5.ODBC
代码:
Class.forName(  " sun.jdbc.odbc.JdbcOdbcDriver "  );
Connection conn  =  DriverManager.getConnection("jdbc: odbc: "   +  sDsn, sUsr, sPwd );
6.PostgreSQL

代码:
Class.forName(  " org.postgresql.Driver "  );
Connection conn  =  DriverManager.getConnection(  " jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName " , sUsr, sPwd );
posted @ 2008-06-14 21:13 hhcto 阅读(1138) | 评论 (0)编辑 收藏

2007年9月12日

模式窗口showModalDialog详解 
showModalDialog()、showModelessDialog()方法使用详解 

Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如: 

  showModalDialog() (IE 4+ 支持) 
  showModelessDialog() (IE 5+ 支持) 


window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。 
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 

当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。 

使用方法如下: 
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) 
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures]) 
参数说明: 
sURL 
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。 
vArguments 
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 
sFeatures 
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。 
dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。 
  dialogWidth: 对话框宽度。 
  dialogLeft: 距离桌面左的距离。 
  dialogTop: 离桌面上的距离。 
  center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。 
  help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。 
  resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。 
  status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 
scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。 

还有几个属性是用在HTA中的,在一般的网页中一般不使用。 
dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。 
edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。 
unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。 

传入参数: 
要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如: 

test1.htm 
==================== 
<script> 
var mxh1 = new Array("mxh","net_lover","孟子E章") 
var mxh2 = window.open("about:blank","window_mxh") 
// 向对话框传递数组 
window.showModalDialog("test2.htm",mxh1) 
// 向对话框传递window对象 
window.showModalDialog("test3.htm",mxh2) 
</script> 

test2.htm 
==================== 
<script> 
var a = window.dialogArguments 
alert("您传递的参数为:" + a) 
</script> 

test3.htm 
==================== 
<script> 
var a = window.dialogArguments 
alert("您传递的参数为window对象,名称:" + a.name) 
</script> 

可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如: 

test4.htm 
=================== 
<script> 
var a = window.showModalDialog("test5.htm") 
for(i=0;i<a.length;i++) alert(a[i]) 
</script> 

test5.htm 
=================== 
<script> 
function sendTo() 

var a=new Array("a","b") 
window.returnValue = a 
window.close() 

</script> 
<body> 
<form> 
<input value="返回" type=button onclick="sendTo()"> 
</form> 

常见问题: 
1,如何在模态对话框中进行提交而不新开窗口? 
如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子, 

test6.htm 
=================== 
<script> 
window.showModalDialog("test7.htm") 
</script> 

test7.htm 
=================== 
if(window.location.search) alert(window.location.search) 
<frameset rows="0,*"> 
<frame src="about:blank"> 
<frame src="test8.htm"> 
</frameset> 

test8.htm 
=================== 
<form target="_self" method="get"> 
<input name=txt value="test"> 
<input type=submit> 
</form> 
<script> 
if(window.location.search) alert(window.location.search) 
</script> 
2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗? 
答案是不能。但在frame里是可以的。
posted @ 2007-09-12 11:19 hhcto 阅读(825) | 评论 (0)编辑 收藏

2007年6月27日

<----------------HTML部分--------------------->

<style>
.close{
  visibility:hidden;
  border : 1px solid #008000;
  position:absolute;
   }
.open{
  visibility:visible;
  border : 1px solid #008000;
  position:absolute;
  }
</style>
<script language='JavaScript'>
 
 //—————显示菜单项 menuId:当前菜单Id—————
 function showMenuItem(menuId) {
  var node = document.getElementById(menuId);
  if(node.hasChildNodes()) {
   node.style.visibility='visible';
  }
 }
 
 
 //—————隐藏菜单项 menuId:当前菜单Id—————
 function hideMenuItem(menuId) {
   document.getElementById(menuId).style.visibility='hidden';
 }
 
 //—————隐藏菜单项事件方法—————
 function hideMenuItemEvent() {
  event.srcElement.parentElement.style.visibility='hidden';
 }
 
 //—————初始化下拉框—————
 function inintSelectMenu() {
  //查找一级节点
  var resultNodes = findXmlnodes("//mainClass",resultNodes);
  var mainClassNode = document.getElementById("mainClass");

  //给一级节点添加子子节点
   addChildrenNodes(mainClassNode,resultNodes);
  
  //缓存一级菜单选择的默认值
  var mainClassTxtNode = document.getElementById("mainClassTxt");
  var mainClassBtnNode = document.getElementById("mainClassBtn");
  mainClassTxtNode.setAttribute("tempId",1);
  //设置下拉菜单绝对位置
  setDivAbsulotePosition(mainClassNode,mainClassTxtNode);
  //设置Btn的绝对位置
  //mainClassBtnNode.style.position = "absolute";
  //setBtnAbsulotePosition(mainClassBtnNode,mainClassTxtNode);
 
  //一级菜单
  mainClassNode.attachEvent(onblur,hideMenuItem);
  //二级菜单
  var subClassNode = document.getElementById("subClass");
  var subClassBtnNode = document.getElementById("subClassBtn");
  var subClassTxtNode = document.getElementById("subClassTxt");
  setDivAbsulotePosition(subClassNode,subClassTxtNode);
  //设置Btn的绝对位置
  //subClassBtnNode.style.position = "absolute";
  //setBtnAbsulotePosition(subClassBtnNode,subClassTxtNode);
  
  //三级菜单
  var itemClassNode = document.getElementById("itemClass");
  var itemClassBtnNode = document.getElementById("itemClassBtn");
  var itemClassTxtNode = document.getElementById("itemClassTxt");
  setDivAbsulotePosition(itemClassNode,itemClassTxtNode);
  //设置Btn的绝对位置
  //itemClassBtnNode.style.position = "absolute";
  //setBtnAbsulotePosition(itemClassBtnNode,itemClassTxtNode);
 }

 
 //—————更新下拉菜单—————
 function updateSelectMenu() {
  
  //被选择节点Id
  var nodeId = event.srcElement.getAttribute("id");
  //被选择节点文本子节点名
  var nodeName = event.srcElement.title != null > 5 ? event.srcElement.title : event.srcElement.childNodes.item(0).nodeValue;
  //被选择节点父节点
  var parentNode = event.srcElement.parentElement;
  //被选择节点父节点Id
  var parentNodeId = parentNode.getAttribute("id");
  //给文本框赋被选择值
  document.getElementById(parentNodeId + "Txt").setAttribute("value",nodeName);
  
  //如果被选择的是一级菜单,更新二、三级菜单
  if(parentNodeId == "mainClass") {
   //缓存一级菜单选择
   document.getElementById(parentNodeId + "Txt").setAttribute("tempId",nodeId);
   //清空二级菜单列表
   document.getElementById("subClassTxt").setAttribute("value","请选择");
   //清空三级菜单列表
   document.getElementById("itemClassTxt").setAttribute("value","请选择");
   //移除二级节点
   removeChildNodes("subClass");
   //移除三级节点
   removeChildNodes("itemClass");
   //查找二级节点
   var resultSubNodes = findXmlnodes("//mainClass[@id=" + nodeId + "]/subClass",resultSubNodes);
   //alert(resultSubNodes.length);
   var subNode = document.getElementById("subClass");
   //给二级节点添加子子节点
    addChildrenNodes(subNode,resultSubNodes);
   
   
  }
  
  //如果更新的是二级菜单,更新三级菜单
  if(parentNodeId == "subClass") {
   //获得一级菜单缓存值
   var mainClassId = document.getElementById("mainClassTxt").getAttribute("tempId");
   //清空三级菜单列表
   document.getElementById("itemClassTxt").setAttribute("value","请选择");
   removeChildNodes("itemClass");
   //移除三级节点
   removeChildNodes("itemClass");
   //查找三级节点
   var resultItemNodes = findXmlnodes("//mainClass[@id=" + mainClassId + "]/subClass[@id=" + nodeId + "]/item",resultItemNodes);
   //alert(resultItemNodes.length);
   var itemNode = document.getElementById("itemClass");
   //给三级节点添加子子节点
    addChildrenNodes(itemNode,resultItemNodes);
  }
  
 }
 
 

 //—————添加子节点列表 parentNode: 父节点, childrenNodes: 子节点列表—————
 function addChildrenNodes(parentNode,childrenNodes) {
  for(i = 0; i < childrenNodes.length; i++) {
   //var tempNode = childrenNodes.item(i);
   //prompt("tempNode",tempNode.xml);
   createNode("div",childrenNodes.item(i).getAttribute("id"),childrenNodes.item(i).getAttribute("name"),parentNode);
   //alert(childrenNodes.item(i).getAttribute("name") + "  " + childrenNodes.item(i).getAttribute("id"));
  }
 }
 
 
 //—————创建子节点,并添加到父节点 type: 节点类型, id:节点Id, txt:文本节点文本值,parentNode: 父节点 —————
 function createNode(type,id,txt,parentNode) {
  //文本节点
  var txtNode = null;
  //需创建的子节点
  var subNode = null;
  
  //判断节点类型是否为空,为空直接返回
  if(type == null) {
   return;
  }
  //创建节点
     subNode = document.createElement(type);
  
  //判断是否包含文本是否为空,不为空则创建并添加文本子节点
  if(txt != null) {
   
   //设置文本节点弹出文字
   if(checkSelectMenuItemLength(txt)){
    subNode.title = txt;
    var txtTemp = txt.substring(0, 5) + "..." ;  
    //创建文本节点
    txtNode = document.createTextNode(txtTemp);
   }else {
    txtNode = document.createTextNode(txt);
   }
   
   //添加文本节点
   subNode.appendChild(txtNode);
  }
  
  //判断id是否为空,不为空则添加id属性
  if(id != null) {
   subNode.setAttribute('id',id);
  }
  subNode.attachEvent("onclick",hideMenuItemEvent);
  subNode.attachEvent("onclick",updateSelectMenu);
  subNode.attachEvent("onmouseover",romanceItem);
  subNode.attachEvent("onmouseout",unRomanceItem);
  
  //添加新建子节点到父节点
  parentNode.appendChild(subNode);
  
 }
 
 //—————查找数据节点 condition: XPath查询条件, resultNodes:返回节点集合—————
 function findXmlnodes(condition,resultNodes) {
  //判断查询条件是否为空
  if(condition == null) {
   return;
  }
  // 初始化ActiveXObject DOMDocment对象
  var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
  // 设置异步方式
  xmlDoc.async=false;
  // 加载xml
  xmlDoc.load(document.getElementById("mainClassTxt").getAttribute("xmlSrc"));
  //  指定查询语言
  xmlDoc.setProperty("SelectionLanguage","XPath");
  //  查询并获得节点
  resultNodes = xmlDoc.documentElement.selectNodes(condition);
  //alert(resultNodes.length); 
  return resultNodes;
 }
 
 
 //—————移除所有子节点 pareantNodeName: 父节点名—————
 function removeChildNodes(pareantNodeName) {
  var subNodes = document.getElementById(pareantNodeName).childNodes;
  var subNodeslength = subNodes.length;
  
  for (i = 0; i < subNodeslength; i++) {
    subNodes.item(0).removeNode(true);
   }
 }
 

 //—————渲染条目背景色—————
 function romanceItem() {
  event.srcElement.style.backgroundColor="cornflowerblue";
 }

 //—————反渲染条目背景色—————
 function unRomanceItem() {
  event.srcElement.style.backgroundColor="#ffffff";
 }

 //—————检测条目长度—————
 function checkSelectMenuItemLength(txt) {
  if(txt.length > 5)
   return true;
  else
   return false;
 }
 
 //—————设置层的绝对坐标 setNode:须设置坐标的节点 consultNode:参照节点 —————
 function setDivAbsulotePosition(setNode,consultNode) {
  setNode.style.top = getPosition(consultNode).y + consultNode.offsetHeight;
  setNode.style.left = getPosition(consultNode).x;
  setNode.style.width = consultNode.offsetWidth;
 }
 
 function setBtnAbsulotePosition(setNode,consultNode) {
  setNode.style.top = getPosition(consultNode).y;
  setNode.style.left = getPosition(consultNode).x + consultNode.offsetWidth;
 
 }
 
 //—————获取参照节点的绝对位置 node: 参照节点—————
 function getPosition(node){ 
  var left = 0; 
  var top  = 0; 
  while (node.offsetParent){ 
   left += node.offsetLeft; 
   top += node.offsetTop; 
  node = node.offsetParent; 
  } 
  left += node.offsetLeft; 
  top += node.offsetTop;
 return {x:left, y:top}; 

 
</script>

<html>
 <body onload="inintSelectMenu();">
  <form>
   <br><br><br><br><br><br><br><br><br><br><br><br>
   <center>
   <table>
    <tr>
    <td>
    &nbsp;&nbsp;
    主分类
    <input type='text' id='mainClassTxt' readonly='true' value="请选择" xmlSrc="selectMenuData.xml">
     <input id='mainClassBtn' type='button' value='>>'  onclick="showMenuItem('mainClass');hideMenuItem('itemClass');hideMenuItem('subClass');" />
    </input>
     <div id='mainClass' class="close" >
     </div>
    </td>
       <td>
       &nbsp;&nbsp;
    子分类
    <input  type='text' id='subClassTxt' readonly='true' value="请选择" >
     <input id='subClassBtn' type='button' value='>>' onclick="showMenuItem('subClass');hideMenuItem('mainClass');hideMenuItem('itemClass');"/>
    </input>
     <div id='subClass' class="close" >
     </div>
    </td>
       <td>
       &nbsp;&nbsp;
    条  目
    <input type='text' id='itemClassTxt' readonly='true' value="请选择"  >
     <input id='itemClassBtn' type='button' value='>>' onclick="showMenuItem('itemClass');hideMenuItem('mainClass');hideMenuItem('subClass');" />
    </input>
     <div id='itemClass' class="close" >
     </div>
    </td>
    </tr>
    </table>
   </center>
  </form>
 </body>
</html>
<----------------HTML部分--------------------->



<----------------XML部分--------------------->
<classes>
 <mainClass id='1' name='book'>
  <subClass id='1' name='computer'>
   <item id='1' name='think in java'></item>
   <item id='2' name='C#'></item>
   <item id='3' name='javascript'></item>
  </subClass>
  <subClass id='2' name='literature'>
   <item id='1' name='literaturea'></item>
   <item id='2' name='literatureb'></item>
   <item id='3' name='literaturec'></item>
  </subClass>
  <subClass id='3' name='test'>
   <item id='1' name='testaaaa'></item>
   <item id='2' name='testbbbb'></item>
   <item id='3' name='testcccc'></item>
  </subClass>
  <subClass id='4' name='ssssss'>
   <item id='1' name='sssssssaaa'></item>
   <item id='2' name='sssssssbbb'></item>
   <item id='3' name='sssssssccc'></item>
  </subClass>
 </mainClass>
 <mainClass id='2' name='book2'>
  <subClass id='1' name='computer2'>
   <item id='1' name='think in java2'></item>
   <item id='2' name='C#2'></item>
   <item id='3' name='javascript2'></item>
  </subClass>
  <subClass id='2' name='literature2'>
   <item id='1' name='literaturea21'></item>
   <item id='2' name='literatureb22'></item>
   <item id='3' name='literaturec23'></item>
  </subClass>
  <subClass id='3' name='test2'>
   <item id='1' name='testaaaa21'></item>
   <item id='2' name='testbbbb22'></item>
   <item id='3' name='testcccc23'></item>
  </subClass>
  <subClass id='4' name='ssssss2'>
   <item id='1' name='sssssssaaa21'></item>
   <item id='2' name='sssssssbbb22'></item>
   <item id='3' name='sssssssccc23'></item>
  </subClass>
 </mainClass>
 <mainClass id='3' name='book3'>
  <subClass id='1' name='computer3'>
   <item id='1' name='think in java3'></item>
   <item id='2' name='C#3'></item>
   <item id='3' name='javascript3'></item>
  </subClass>
  <subClass id='2' name='literature3'>
   <item id='1' name='literaturea31'></item>
   <item id='2' name='literatureb32'></item>
   <item id='3' name='literaturec33'></item>
  </subClass>
  <subClass id='3' name='test3'>
   <item id='1' name='testaaaa31'></item>
   <item id='2' name='testbbbb32'></item>
   <item id='3' name='testcccc33'></item>
  </subClass>
  <subClass id='4' name='ssssss3'>
   <item id='1' name='sssssssaaa31'></item>
   <item id='2' name='sssssssbbb32'></item>
   <item id='3' name='sssssssccc33'></item>
  </subClass>
 </mainClass>
 <mainClass id='4' name='book4'>
  <subClass id='1' name='computer4'>
   <item id='1' name='think in java4'></item>
   <item id='2' name='C#4'></item>
   <item id='3' name='javascript4'></item>
  </subClass>
  <subClass id='2' name='literature4'>
   <item id='1' name='literaturea41'></item>
   <item id='2' name='literatureb42'></item>
   <item id='3' name='literaturec43'></item>
  </subClass>
  <subClass id='3' name='test4'>
   <item id='1' name='testaaaa41'></item>
   <item id='2' name='testbbbb42'></item>
   <item id='3' name='testcccc43'></item>
  </subClass>
  <subClass id='4' name='ssssss4'>
   <item id='1' name='sssssssaaa41'></item>
   <item id='2' name='sssssssbbb42'></item>
   <item id='3' name='sssssssccc43'></item>
  </subClass>
 </mainClass>
</classes>
<----------------XML部分--------------------->

posted @ 2007-06-27 09:51 hhcto 阅读(1099) | 评论 (1)编辑 收藏
 
  1. var newopen = function(id,level)   
  2. {   
  3.   return function()   
  4.   {   
  5.     opentree(id,level);//该函数为外部定义的一个执行函数;   
  6.   }   
  7. }   
  8. x.attachEvent("onclick",newopen(id,parseInt(level)+1));   
  9. y.attachEvent("onclick",newopen(id,parseInt(level)+2));  
posted @ 2007-06-27 09:48 hhcto 阅读(2871) | 评论 (0)编辑 收藏

2006年12月17日

java.lang.UnsatisfiedLinkError错误问题

运行一段代码的时候报出一下错误:
java.lang.UnsatisfiedLinkError: no swt-win32-3063 in java.library.path
   at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)
   at java.lang.Runtime.loadLibrary0(Runtime.java:788)
   at java.lang.System.loadLibrary(System.java:834)
   at org.eclipse.swt.internal.Library.loadLibrary(Library.java:100)
   at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:18)
   at org.eclipse.swt.widgets.Widget.<clinit>(Widget.java:66)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:324)
   at astexplorer.ASTMain.compileAndRun(ASTMain.java:970)
   at astexplorer.ASTMain.main(ASTMain.java:997)
Exception in thread "main"


估計在你的eclipse project根目錄下沒有swt-win32-3063.dll這個文件,
可在eclipse目錄下找到這個dll連接庫後,copy至project的根目下,應該可以解決問題的.

另外產生java.lang.UnsatisfiedLinkError問題也有可能是project以前使用了高版本的jdk/jre編譯,
現在使用低版本的jdk/jre執行而產生錯誤.


你可以把org.eclipse.swt.win32.win32.x86_3.1.0.jar 里面的三个动态库*.dll文件
swt-awt-win32-3138.dll,swt-gdip-win32-3138.dll,swt-win32-3138.dll   都放到
C:\windows\system32下面,这样肯定可以了

原因是swt 由C 和 C++直接实现。。。由动态链接库的形式调用。所以要放到system32下
posted @ 2006-12-17 10:38 hhcto 阅读(13911) | 评论 (0)编辑 收藏

2006年12月10日

EditPlus是很多程序员非常熟悉的编辑工具,它以占用系统资源小、操作简便灵活、支持文件类型丰富(还能自定义文件类型)等优点而被广泛使用。
其实EditPlus不但有编辑程序的功能,还有灵活的编译功能,下面就简单介绍一下EditPlus对JAVA的编译设置。
实现对JAVA的编译
在配置EditPlus之前,我们先要将JAVA的运行环境安装并且调试好,这里我就不再说明了。
首先,从菜单“工具(Tools)”;“配置用户工具...”进入用户工具设置。
在类别里展开“工具”树形菜单;“用户工具”,选择“组和工具项目”中的“Group 1”,点击面板右边的“组名称...”按钮,将文本Group1”修改成“编译JAVA程序”。
然后选择修改的组“编译JAVA程序”,点击“添加新工具”按钮,选择程序,建立“新建程序”,选中它。
然后就是最重要的步骤(修改属性):
1.1 添加编译功能
“菜单文字”里的内容修改为“JAVAC”;
“命令”选择安装JDK后的BIN目录中的编译程序JAVAC.EXE,如果JDK 安装路径为“c:\jdk”,那么此路径为“c:\jdk\bin\javac.exe”;
“参数”选择“文件名称”,即显示为“$(FileName)”;
“初始目录”选择“文件目录”,显示为“$(FileDir)”;选择“捕获输出”复选框。
1.2 添加执行功能
“菜单文字”里的内容修改为“JAVA”;
“命令”选择安装JDK后的BIN目录中的编译程序JAVA.EXE,路径为“c:\jdk\bin\java.exe”;
“参数”选择“文件名(不含扩展名)”,即显示为“$(FileNameNoExt)”;
“初始目录”选择“文件目录”,显示为“$(FileDir)”;选择“捕获输出”复选框。
这样就完成了基本的配置工作,下面来试着编写一个JAVA程序来测试一下(如图),编译的所有信息都会显示在输出窗口中,双击某一行错误信息,EditPlus会自动定位到出错行
转自(http://www.neeao.com/blog/article.asp?id=2400
posted @ 2006-12-10 18:00 hhcto 阅读(588) | 评论 (0)编辑 收藏
仅列出标题  下一页