2006年9月23日
#
今天做 毕业设计,想用XML来存数据,结果生成的XML文件用dom来解析时总是抱错,仔细查找,发现原来是XML中的特殊(转义字符)字符造成的。
在XML语言中,用实体对特殊字符进行转义,需要转义的字符有"<" 、 ">"、 "&"、 "'"、 """。
具体的转换关系如下:
< |
< |
小于号 |
> |
> |
大于号 |
& |
& |
和 |
' |
' |
单引号 |
" |
" |
双引号 |
前段时间由于考研这事那事的,很久没有到这里来了,现在所有事情都已尘埃落定,终于回到了我久违的根据地……
纪念一下 ^_^
至从写了swt学习笔记(一)之后,好久都没有再写blog了,可谓这个之(二)是姗姗来迟啊
^_^,以后会尽快地把后面的内容都补上 。这主要写下一些简单的控件……
Label:label是不能被用户所修改的
label的用法:
Label label1 = new Label(shell, styles);
其中styles可以为BORDER, CENTER, LEFT, RIGHT, WRAP 和 SEPARATOR
其中SWT.SEPARATOR 为一条线 当styles为SEPARATOR时,可以加入 HORIZONTAL(水平的),VERTICAL, SHADOW_IN, SHADOW_OUT and SHADOW_NONE.属性
Text: 一般用法 Text text1 = new Text(shell, styles);
其中styles的属性值可以为BORDER, H_SCROLL, V_SCROLL, MULTI,SINGLE, READ_ONLY and WRAP.等
如果想设置为密码输入框,则加上方法text2.setEchoChar('*');即可
Button:一般用法为Button button1 = new Button(shell,styles);
其中styles可以为 PUSH, CHECK, RADIO, TOGGLE and ARROW
注意setBounds(横坐标,纵坐标,长度,宽度)可以代替setLocation(0,0);setSize(100,20);两个方法
button最基本的事件句柄是selection event handler,当用户点击按钮被选中时,调用这个selection event handler,为了创建一个selection event handler.
要创建一个监听器listener,一般采用下面的代码:
button1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Button1 was clicked");
}
});
List: List包含了一些项目的集合,一般用法为:List list1 = new List(shell, styles);
其中styles可以为:BORDER, H_SCROLL, V_SCROLL,SINGLE and MULTI
可以用list1.setItems(new String[] {"Strawberry","Banana","Apple"});list1.add("Pickle");这两个方法来向List中加入数据
在List中可以用MouseListener来响应项目被点击所引发的事件,MouseListener包括MouseDown and MouseUp events
一般的代码为模式为:
list2.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
System.out.println(list2.getSelection()[0] +" wins");
}
public void mouseUp(MouseEvent e) {
System.out.println("Try again!");
}
});
composite:它既是一个组件,也是一个容器,也即是说,在它里面还可以放置其他组件
Group: group是composite的一个子类,他最主要的目的是和其他组件分隔开,group也是一个容器,也是一个组件,放在它里面的组件的位置全都是相对位置
今天用split,呵呵,发现了一个有趣的问题。
程序调了半天,最后把问题锁定在了split上,于是就写了一个测试程序
public class test {
public static void main(String []args){
String str = "aabbbcc";
String temp[] = str.split("b");
for(int i=0;i<temp.length;i++){
System.out.println(i+"="+temp[i]);
}
}
}
以上代码的输出居然是:
0=aa
1=
2=
3=cc
以前一直以为应该是
0=aa
1=cc
虽然没看见split实现的源码,以前的确是错了,呵呵
以后也应该多留意一下这些小问题。
最近初识eclipse,发现确实是很成功的一个开发java的IDE,其最大的成功之处就是其插件功能,形形色色的插件,可以随心所欲的配置我们的eclipse。
插件之于eclipse是如此的重要,因此搞清楚插件的安装方法也是很有必要的,最近在网上搜到一些,也结合自己的经验,总结在此:
插件有四种安装方法(据我所知):
1. “帮助”->“软件更新”->“查找并安装”->“搜索要安装的新功能部件”->“新建远程站点”(此种方式用于在线更新)
2. “帮助”->“软件更新”->“查找并安装”->“搜索要安装的新功能部件”->“新建本地站点”(如果插件已经下载到了本地,请不要用第一种方法)
3. 直接拷贝plugins和features两个目录下的内容置于$Eclipse_Home$/对应的plugins和features下面
4. 用link外链接与外部插件关联。将所有的插件用一个外部目录存放起来,假如是D:\plug-in,将上面所示的插件目录文件全部拷贝到该目录下,比如Tomcat插件,此时的文件路径就是D:\plug-in\tomcat_plug\eclipse\plugins\com.sysdeo.eclipse.tomcat_3.1.0.beta(请注意,方法四一定要严格这样的目录路径放置文件)。然后在$Eclipse_Home$下新建一个links目录,并在links目录下建立关联文件,假如是tomcat.link,在建立的关联文件中加入如下语句:
path=D:\\plug-in\\tomcat_plug
也可以写成下面的形式
path=D:/plug-in/tomcat_plug
还可以写成相对路径的形式
剩下的事情,不用我说你肯定都知道了,就是重启Eclipse,在Dos窗口下进入Eclipse安装目录,键入命令eclipse -clean,回车,或者进入$Eclipse_Home$/configuration目录,删除org.eclipse.update后再重新启动Eclipse。
如果说在安装插件时,eclipse在启动时未装在插件,解决办法有以下几种:
1.删除整个目录/eclipse/configration/org.eclipse.update/
2.在启动eclipse时加上" -clean"
3.在/configration/config.ini文件中加上一行osgi.checkConfiguration = true,这样,启动时eclipse就会自动寻找安装插件,找到以后,下次再启动之前将那一行删除即可。
由于最近经常用到ASCII码表和键盘扫描码表,所以就把它贴上来,用的时候发方便一些。也希望能大家提供一点点方便 ^ ^
功能键
F1 112 F2 113 F3 114 F4 115 F5 116 F6 117 F7 118
F8 119 F9 120 F10 121 F11 122 F12 123
数字键
0 48 1 49 2 50 3 51 4 52 5 53
6 54 7 55 8 56 9 57
字母键
A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73
J 74 K 75 L 76 M 77 N 78 O 79 P 80 Q 81 R 82
S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90
小键盘
NUMLOCK 144 NUMPAD0 96 NUMPAD1 97 NUMPAD2 98 NUMPAD3 99
NUMPAD4 100 NUMPAD5 101 NUMPAD6 102 NUMPAD7 103 NUMPAD8 104
NUMPAD9 105 NUMPAD/ 111 NUMPAD* 106 NUMPAD- 109 NUMPAD+ 107
PAD. 110 PADENTR 13
方向鍵
SCROLL 145 PRINT 44 INSERT 45 DELETE 46 HOME 36 END 35
PGDOWN 34 PGUP 33
← 37
↑ 38
→ 39
↓ 40
其他功能鍵
ESC 27
SPACE 32
SHIFT 16
CONTROL 32
ALT 18
CAPSLOCK 20
TAB 9
BACK 8
CTRLBREAK 17
RETURN 13
最近要封装一个C++生成的DLL文件,在网上搜到一些方法但是那些方法一般都是先生成 .c的头文件,然后再去改C++中的源代码,可是现在人家就给我一个DLL文件,我该怎么办呢?请各位高人指点,在此不胜感激!!!
由于无法忍受
AWT或SWING的怪异界面和蜗牛般的速度,最近起了学习SWT的冲动。SWT(Standard Widget Toolkit)是由IBM推出的基于JAVA的图形界面开发库,之所以要说他是“基于JAVA的”的是因为在程序元编写代码时使用的JAVA语言,然而事实上,swt的底层代码是由C语言来实现的,这点可以从Swt为什么要发布基于windows,linux……的操作系统的不同的包体现出来。swt比起awt和swing来说,不可同日而语,并且swt具有很好的稳定性,他最大化了操作系统的图形构件API,只要操作系统提供了相应的图形构件,swt会用JNI技术去调用他们,只有在那些操作系统中不存在的图形构件,swt才回去实现他们。
public class FirstSwt{
public static void main(String [] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.open();
// 开始事件处理循环,直到用户关闭窗口
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
这是一个swt最基础的程序,也是一个很基础的模式,程序中首先定义了用Display display = new Display();定义了一个容器(component),然后用Shell shell = new Shell(display);定义了一个窗口(window),display是一个最大的容器,在此容器上可以放置很多shell,类似于awt的思想,每个组件自然就应该放置在shell中了。接下来的shell.open()将该shell打开,只有将shell打开之后,基于此shell上的组件才能被显示出来。接下来的语句就是一个处理这个shell中事件的语句,在shell没有被关闭前(shell.isDisposed()),系统会将所有的事件从事件队列中取出,然后一个一个处理,如果没有事件发生,则该display就处于sleep状态,等待事件发生后将其唤醒。当shell关闭后,程序也就退出了。
学了这么久的java,感觉java还是有很多模式在编程中可以套用的。
如果要将某个URL对应的网页下载下来,并对其进行操作就可以用下面的模式
public class Down
{
public Down(String urlstring )
{
URL url;
InputStream in;
OutputStream out;
try {
url = new URL(urlstring);
in = url.openStream();
int c;
while ((c = in.read()) > -1) {
// do something you want to do
}
in.close();
} catch (IOException e) {}
}
}
今天答辩,总是忍不住在那里笑,不管在什么场合,自己都是那么随和……
越来越有这种感觉了:自己好像慢慢在重现小时候的幼稚,自己在慢慢恢复以前的童真……
都这么大人了,怎么还能这样呢?从此刻起,下定决心,一定要有所改变……我能做到的,一定能的
因为今天虽然不错,但是我相信明天应该更好……