2009年2月16日 星期一

ListView 的使用方式

  • ListView的屬性View有五種設定值,分別是LargeIcon、Details、SmallIcon、List、Tile,代表著五種不同的資料檢視模式

  • Item屬性可以編輯項目,這些項目,就是會呈現在ListView上的所有項目,當你以Details以外的模式查看資料就可以看到這些項目了。但是,此時在檢視模式「Details」看則是空白。

  • 如何在Detail模式下可以看到資料呢?你必須編輯Columns屬性,只要新增一個Column,就能顯示出這些項目了。

  • 如果再新增Columns,會發現,不會顯示多的資料出來,後面幾欄都會是空的,必須編輯Items的SubItems屬性,這個項目會對於剛剛的Items屬性增加細節資訊,這些細節資訊,會對應到兩種顯示模式,分別是Details跟Tile,對於Details,則是看Columns的數量,如果Columns的數量夠多才能將細節資訊顯示出來而對於Tile,增加的資訊,會列在主資訊旁邊,有點像是註解般的,但是要注意的是,Columns屬性還會影響檢視模式「Tile」的顯示,Columns有幾個,這邊才會把每個Items的第幾個SubItems顯示出來的

  • 而群組屬性則是可以將所有的Items分成幾個不同的群組來顯示資料,編輯Groups屬性時會發現你無論新增幾個Groups,對畫面的影響僅有畫面多了一個Default的標題,所有項目都被放在Default標題之下。接下來要做的動作是到Items的屬性設定畫面,將Group屬性選擇成剛剛建立的Group,凡是沒有指定的都會放在Default那個區塊底下的

  • 還可以放入ImageList元件,將圖片設定好,就可以在ListView的LargeImageList與SmallImageList屬性設定到ImageList元件,這樣在檢視模式:「LargeIcon」就可以看到大圖示,而其他的模式則可以看到指定小圖。

2009年2月13日 星期五

Background worker

Background worker:一個簡單、好用的Thread方案
它可以以很簡單的方法產生工作執行緒,並且保持主執行緒的可用性,並且也支援回報狀態與交換資料能力,更方便的是他在處理跨執行緒使用UI介面的部分,大多時候可以不用透過Delegate、Invoke、WaitCallBack......等等複雜的觀念與機制,因為他已經幫你實作掉了。


寫法:
可以由工具箱當中直接拉Background worker的控制項到Form上面,這樣也可以直接雙擊IDE介面來產生事件Method。

或是也可以自己宣告來產生實體,自己設定Event物件與Event Method。




Method:
RunWorkerAsync(object)
呼叫此函式,會讓Background worker以多執行緒的方式來執行DoWork()內的程式


DoWork(object sender, DoWorkEventArgs e)
將你想執行的耗時的程式片段寫在其中,在呼叫Background worker的RunWorkeAsync()時,就會以多執行緒的方式執行此函式。注意,在這個函式中,可以執行任何跟UI有關的動作,不允許跨執行緒存取UI。


RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
當DoWork()被執行完成之後,會自動呼叫這個函式,如果預期完成之後要做什麼動作,可以寫在這個函式裡。這個函式可以存取Main Thread的UI,不會有誇執行緒的問題。或者說,除非寫法上有多執行緒的特殊用法,否則一般來說這個函式會在Main Thread執行,也因此才不會有跨執行緒存取UI的問題產生。



ProgressChanged(object sender, ProgressChangedEventArgs e)
Background worker提供了一個ReportProgress()的函式,可以隨時對這個背景執行的工作定義完成進度,而通常,想當然爾,這個函式,會在DoWrok裡呼叫,依照做的進度,來呼叫函式傳給Background worker,而當你呼叫了ReportProgress()之後,就會立刻一併觸發ProgressChanged()。而這個函式可以存取Main Thread的UI,不會有誇執行緒的問題。或者說,除非寫法上有多執行緒的特殊用法,否則一般來說這個函式會在Main Thread執行,也因此才不會有跨執行緒存取UI的問題產生。 也就是說,一般我們會把需要變更UI的程式寫在這裡,而不會寫在DoWork(),當DoWrok()當中的,需要對UI有什麼控制時,就以回報進度的方式,在ProgressChanged()裡頭來做。

2009年2月10日 星期二

JAVA Swing高手設計得很複雜的Table跟Tree等等

請參考這兩個網頁
還有Sample code可以下載

http://crionics.com/products/opensource/faq/swing_ex/SwingExamples.html

http://www.javaworld.com.tw/jute/user/download/28333/JavaSwing.mht

針對各資料庫的JDBC下載與使用

Microsoft SQL Server series (6.5, 7.x, 2000, 2005)
JDBC Name: jTDS
Version: 0.5.1
Download URL: http://sourceforge.net/project/showfiles.php?group_id=33291

JDBC語法:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password");







MS官方
JDBC Name: JDBC
Download URL:Microsoft SQL Server 2005 JDBC Driver 1.2SQL Server 2000 Driver for JDBC Service Pack 3

MS SQL 2000 的JDBC語法:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:sqlserver://hostNameOrIP:1433;user=UserName;password=*****;database=databaseName");

MS SQL 2005 的JDBC語法:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:sqlserver://hostNameOrIP:1433;user=UserName;password=*****;database=databaseName");





MySQL
JDBC Name: Connector/J 3.0
Version: 3.0.8-stable
Download URL: http://www.mysql.com/downloads/api-jdbc-stable.html
JDBC語法:
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");






Oracle
JDBC Name: Connector/J 3.0
Version: 3.0.8-stable
Download URL: http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html

Class.forName("oracle.jdbc.driver.OracleDriver");Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:databse","user","password");



[本文參考] http://www.javaworld.com.tw/jute/post/print?bid=21&id=366

預先指令 Prepared Statement

如果你同樣SQL指令是需要執行非常多次,僅在於VALUE一直改變,那麼該考慮使用Prepared Statement來增加效能,也能增加撰寫程式時的彈性與便利。

請參考
http://www.exampledepot.com/egs/java.sql/InsertPs.html?l=find

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html

關於我自己

我的相片
從股票、期貨、到選擇權,一路以來的經驗與努力絕對不是一言可以道盡,發現選擇權的穩定獲利純粹是在一個偶然之下,這幾年感謝我的女友,一路支持我,我也用穩定的報酬來回報,面對詭譎多變的股市,我不再徬徨無措,我不斷調整我的步伐,調整我的投資方式,讓投資更穩、更好!

我的網誌清單