Swing中實現增刪查改項目後獲得的經驗

                                      初次接觸Swing之後的經驗

      通過兩週的項目實戰,讓我對Swing有了初步的瞭解。雖然現在Swing不再被使用,寫本博客的目的是,想解決像我一樣的小白,在以後老師講完JDBC和數據庫之後,留一個有關數據交互的小項目時候,能夠幫助大家一些小的問題。

首先我先和大家分享一下,我在做這個增刪查改的小項目遇到的問題:

  1.這次項目中,我接觸最多的NULLPOINTEREXCEPTION,因爲剛學完java SE 加 JDBC和 數據庫,所以在寫項目的時候經常會出現不去對對象實例化(new  XXXXX()),造成很多的空指針異常。這點希望能夠幫助 剛接觸項目的小白們。

  2.要注意的是SQLEXCEPTION,也就是SQL語句的準羣性很重要,往Myeclipese裏面寫語句的時候,最好先再數據庫裏面測試好語句以後再往Myeclipese裏寫,這樣能減免不必要的錯誤。當設置動態語查詢的時候(SQL語句中有“?”的)這樣我們要注意寫了幾個問號,要去對應幾個PreparedStrement下的相應類型的參數。 eg:INSERT INTO TABEL VALUES(MY_ID.NEXTVAL,?,?,?,?,?)。

還有一個是SQLRecoverableException異常,這是因爲數據庫的服務和監聽沒有開,也就是說數據庫沒開。

  3.在做Swing界面顯示的時候,他要和數據庫進行交互,在對JTable進行拖拽的時候,一定要按住JTable自己去畫一個界面,而不是直接放在JFrame中然後拖拽點,這樣是不對的,我在這就卡了半天,所以再跟數據庫交互的時候,一直沒有傳過來值。

(左圖是正確的,右圖是錯誤的)****記住要先點擊ABSOLUTE LAYOUT  這樣能使你界面中的操作都可以移動。

   4.我在對數據進行更新的時候也遇到了問題,因爲我弄的修改是選中要修改的行,之後跳轉到修改的頁面,之後將選中的行內的數據全部顯示在這個頁面中,如下圖。所以裏面涉及到實體類裏面的值回傳的問題,這裏需要一個帶有實體類對象的構造函數,將你的用戶信息傳到這個要修改的界面中,像public Update(User user) 之後將user裏面的數據獲取到 text中id = new JTextField(user.getId().toString());像這樣就獲取到ID了。


然後跟大家分享一下,我在做這個項目之後,所學到的東西,希望能幫助大家。


1.創建JTbale時候,在拖完控件之後,王麗寫入代碼,你可以用new JTable(二維數組,一維數組);這個方法來實現你要創建的這個Table 。(二維數組裏面放的是和數據庫交互的數值,一位數組放的是你要現實的數據庫相應字段對應的名字(這個名字一定要和數據庫裏面所有的字段對應上,不能缺一個,或者多一個,因爲你的二維數組裏面放的是數據庫裏面的內容。))。

除了new JTable之外,還有一個和其類似的方法。這個方法我沒用,所以不太熟悉,只是知道一小部分。

先創建一個DefaultTableModel model=new DefaultTableModel(二維數組,一維數組);(二維數組和一維數組放的東西和上面的內容一樣),然後再new JTable(model);這樣創建出來的table二者是一樣的,後者能對table進行一些約束,顯得格式更好看些。

2.在你點擊某一監聽事件的時候,想要彈出提示框,這時候就用到JOptionPane包下面的內容。具體的大家可以去查一下API。就是有一個要跟大家說一下,就是在選擇是否框的時候,會出現點擊哪個按鈕,去執行哪個事件的問題,這裏我們要對其判斷一下,到底是進入否事件還是是事件。我這裏只是執行了是的請求,否沒做任何反應。這裏你在點擊是的時候,他就會執行是這個事件的命令。

int n =JOptionPane.showConfirmDialog(null,"請確認是否刪除!","請求框!",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
 if(n==JOptionPane.YES_OPTION)

3.在這個項目中,我寫了一個小小的驗證碼功能,用在登錄。沒有太複雜,來和大家分享一下。

public String checkLogin(){
String str ="" ;
String string="ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwxyz0123456789";

for(int i =0;i<4;i++){
str+=string.charAt((int)(Math.random()*62));
}
return str;
}

   這樣我們能夠隨機獲取裏面的4位字符,並且組成一個字符串。在登錄的時候只要判斷驗證碼是否爲空,是否相匹配就行了。在界面裏面,我用的JText來接收的獲取到的驗證碼,將其設置成只能看到不能修改的效果。如下效果:


4.和大家分享幾個正則表達式:

 a.用來匹配用戶名的是

  String name = "[^?!@#$%\\^&*()]+";(這個是非法的字符)
Pattern pattern = Pattern.compile(name);
Matcher matcher = pattern.matcher(username);
boolean flag = matcher.matches();

!checkUserName(username) (因爲是非法的字符,所以判斷的時候加一個!,對他來進行取反)這時候用戶名裏面只要不出現這幾個字符就行了。

b.用來匹配密碼的^[([a-z0-9A-Z]+[\\-|\\+|\\*|\\/|\\=|\\_|\\?|\\>|\\<|\\,|\\.]?)([a-z0-9A-Z]+)]{6,15}$  保證密碼有數字,可有符號,有字母,並且至少是6位以上包括六位,不超過十五位包括十五。

c.用來驗證性別和權限的

String check4="^['男'|'女']$";(性別)
String check5="[^?!@#$%\\^&*()]+"(權限);

d.用來匹配郵箱的(常用)

String check2 = "^([a-z0-9A-Z]+[_|\\.|-]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+)?\\.+[a-zA-Z]{2,}$";


 最後和大家分享一下我的項目心得:

 1.  做項目,不要分哪塊重要哪塊不重要之分,我們都要儘自己最大的努力做到最好。千萬不要因小失大,哪怕這個地方我們再熟悉,也有要敲一下的必要,也許你會遇到不一樣的問題。

 2.遇到問題千萬不要退縮,要積極去面對,去想辦法去解決,如果實在解決不了,暫時先放一下,去看看別的地方,返回來再做這塊,那時候也許你就能想明白了,這就好比我們的小初高的每次考試一樣,不要掛在某一個地方。

 3.當你接到一個不熟悉的項目的時候,想好裏面要用到什麼類,然後先去查下API,你會發現你的項目就會好做很多。

4.最後給大家展示一下我的項目的效果圖吧。之前的登錄已經給大家上傳了,我就在跟大家分享一下我的管理員和用戶的界面吧。顯示管理員界面。

這裏的查詢是模糊查詢,這個就要求在SQL語句中實現了。


這裏我就不給大家一一展示各種功能了,如果有興趣大家能找我,我給大家發下代碼,或者解決下遇到的問題都行,讓我們共同進步。下面是用戶界面


這個就是我的普通用戶的界面了。能夠修改自己的個人資料,還能添加自己的愛好等。這裏要強調一下生日,因爲這裏面涉及到了util類型的Date和Sql類型的Date之間的轉換

************************************我們在寫實體類的時候是util包下的Date類型,在進行數據庫傳值的時候要將util的轉換成sql的,new  Date(user.getDate().getTime())這樣就能進行傳值了。

你在界面裏面輸入Date值的時候 要先給他格式化一下,這樣就可以得到你想要的日期類型了。new SimpleDateFormat("yyyy-MM-dd").parse(up.birthday.getText().trim())



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章