2008年5月25日
#
今天做 畢業設計,想用XML來存數據,結果生成的XML文件用dom來解析時總是抱錯,仔細查找,發現原來是XML中的特殊(轉義字符)字符造成的。
在XML語言中,用實體對特殊字符進行轉義,需要轉義的字符有"<" 、 ">"、 "&"、 "'"、 """。
具體的轉換關系如下:
< |
< |
小于號 |
> |
> |
大于號 |
& |
& |
和 |
' |
' |
單引號 |
" |
" |
雙引號 |
2008年4月23日
#
前段時間由于考研這事那事的,很久沒有到這里來了,現在所有事情都已塵埃落定,終于回到了我久違的根據地……
紀念一下 ^_^
2007年6月14日
#
至從寫了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也是一個容器,也是一個組件,放在它里面的組件的位置全都是相對位置
2007年5月26日
#
今天用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實現的源碼,以前的確是錯了,呵呵
以后也應該多留意一下這些小問題。
2007年3月7日
#
????????最近初識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就會自動尋找安裝插件,找到以后,下次再啟動之前將那一行刪除即可。
2007年1月28日
#
由于最近經常用到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
2006年11月10日
#
???????? 最近要封裝一個C++生成的DLL文件,在網上搜到一些方法但是那些方法一般都是先生成 .c的頭文件,然后再去改C++中的源代碼,可是現在人家就給我一個DLL文件,我該怎么辦呢?請各位高人指點,在此不勝感激!!!
2006年11月8日
#
?????? 由于無法忍受
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關閉后,程序也就退出了。
2006年10月27日
#
學了這么久的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) {}
??????? }
??? }
2006年9月23日
#
今天答辯,總是忍不住在那里笑,不管在什么場合,自己都是那么隨和……
越來越有這種感覺了:自己好像慢慢在重現小時候的幼稚,自己在慢慢恢復以前的童真……
都這么大人了,怎么還能這樣呢?從此刻起,下定決心,一定要有所改變……我能做到的,一定能的
因為今天雖然不錯,但是我相信明天應該更好……