2011-04-06 40 views
0

我有一個JFrame名稱意見。在這種形式中,每當我填寫表單時,我給出了每個字段的錯誤消息,如果我將任何字段設置爲空,並且單擊保存按鈕,它應該顯示該特定空字段的錯誤消息爲空。我的代碼是保存數據,但是當我把任何字段爲空,然後單擊保存按鈕時,它會顯示錯誤消息msg,該消息字段爲空,但是當我單擊該錯誤消息框的ok按鈕時,它也會保存數據,但使用該空字段我的代碼是:我想數據保存成功

String name= (String)cbNM.getSelectedItem(); 
    if(name.equals("")) 
     JOptionPane.showMessageDialog(null," ENTER THE NAME"); 

    String socialservice=(String)cbsocial.getSelectedItem(); 
    if(socialservice.equals("")) 
     JOptionPane.showMessageDialog(null," SELECT THE SOCIAL SERVICE"); 

    String whichservice=tasocial.getText(); 
    if(whichservice.equals("")) 
     JOptionPane.showMessageDialog(null," ENTER SOCIAL SERVICE U LIKE"); 

    String expectation=taexpectation.getText(); 
    if(expectation.equals("")) 
     JOptionPane.showMessageDialog(null," ENTER UR EXPECTATION FROM WANI SAMAJ"); 

    String revealinfo=(String)cbreveal.getSelectedItem(); 
    if(revealinfo.equals("")) 
     JOptionPane.showMessageDialog(null,"SELECT UR DECISION ON REVEAL THE INFORMATION"); 

    String addr=taaddress.getText(); 
    if(addr.equals("")) 
     JOptionPane.showMessageDialog(null," ENTER THE ADDRESS"); 



    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection con=DriverManager.getConnection("jdbc:odbc:wanisamajDB"); 
     Statement stmt=con.createStatement(); 
     String qry= "INSERT INTO Opinion(PersonName,LikeSocialService,WhichService,Expectation,RevealInformation,Address) VALUES('"+name+"','"+socialservice+"','"+whichservice+"','"+expectation+"','"+revealinfo+"','"+addr+"')"; 
     stmt.executeUpdate(qry); 
     JOptionPane.showMessageDialog(null,"RECORD IS SAVED SUCCESSFULLY "); 
     con.close(); 

    } catch(SQLException eM) { 
     JOptionPane.showMessageDialog(null,"RECORD IS NOT SAVED"); 
    } catch(Exception et) { 
     System.out.println("error:"+et.getMessage()); 
    } 
+2

兩個刀片1 )不要在您的最終用戶SHOUT。 2)避免使用像'U'和'UR'這樣的小孩字樣。他們沒有給任何值得留下深刻印象的人留下深刻的印象,他們只是讓你看起來像個小丑。 – 2011-04-06 17:57:57

回答

1

那是因爲你沒有這樣做停止它:

if(whichservice.equals("")) 
    JOptionPane.showMessageDialog(null," ENTER SOCIAL SERVICE U LIKE"); 

一旦調用showMessageDialog()回報你讓它繼續下降到您的代碼,將其保存在數據庫中。

if(whichservice.equals("")) 
{ 
    JOptionPane.showMessageDialog(null," ENTER SOCIAL SERVICE U LIKE"); 
    return; 
} 

或者,你可以調整你的代碼是一系列的if/else如果與保存到數據庫的代碼被包含在最終的最終else的。

2

後顯示您的消息,你的方法繼續運行,因爲你沒有打破運行在任何一個步驟:

if(name.equals("")) 
     JOptionPane.showMessageDialog(null," ENTER THE NAME"); 

基本的解決方案(雖然很醜陋)是消息出現後添加return

if(name.equals("")) 
{ 
     JOptionPane.showMessageDialog(null," ENTER THE NAME"); 
     return; 
} 

更好的解決方案是創建JTextAreas(我想這就是ta代表前綴)和複選框/單選按鈕的數組,並重復他們的數組。例如:

在init或GUI構建:

String tainputnames[] = {"Social Service", "Expectation", "Address"}; 
JTextArea tainput[] = new JTextArea[tainputnames.length]; 
for (int i=0; i < tainputnames.length; i++) 
{ 
    tainput[i] = new JTextArea(""); 
    tainput[i].setName(tainputnames[i]); 
} 

在檢查:

for (int i = 0; i < tainputnames.length; i++) 
{ 
    if (tainput[i].getText().equals("") 
    { 
     OptionPane.showMessageDialog(null, "Enter " + tainputnames[i]); 
     return; 
    } 
} 

同爲複選框等

+0

+1爲循環的例子/解釋,但我不知道他真的準備好了:) – 2011-04-06 18:09:17

+0

@Brian - 我明白,在下一個答案。 – MByD 2011-04-06 18:10:52

相關問題