2016-07-16 60 views
0

我有兩個文本區域之間的按鈕在他們之間在鞦韆中的框架,我使用NetBeans。Swing框架不保留或單擊jbutton後保持

單擊該按鈕,從textArea1中選取一個sql查詢,使用getText()

使用SubmitData()處理輸入(即在分割查詢後檢查關鍵字的拼寫)。在該方法中,它僅使用setText()將輸出設置爲textArea2

我的問題是: 我按下按鈕後框架不會保留或保持不動。

這裏是我的代碼:

void createUI() throws Exception 
{ 
    JFrame frame = new JFrame("JDBC All in One"); 

    // Layout of Main Window 
    Container c = frame.getContentPane(); 
    c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); 

    textArea1 = new JTextArea(10, 50); 
    textArea1.setBounds(10, 10, 30, 30); 

    btnInsert = new JButton("Submit"); 
    btnInsert.setBounds(10, 10, 10, 10); 
    btnInsert.addActionListener(this); 

    textArea2 = new JTextArea(10, 50); 
    textArea2.setBounds(10, 10, 30, 30); 

    JPanel pnlInput1 = new JPanel(); 
    JPanel pnlInput2 = new JPanel(); 
    JPanel pnlInput3 = new JPanel(); 

    pnlInput1.add(textArea1); 
    pnlInput3.add(btnInsert); 
    pnlInput2.add(textArea2); 

    frame.add(pnlInput1); 
    frame.add(pnlInput3); 
    frame.add(pnlInput2); 

    frame.setSize(400, 500); 
    frame.pack(); 
    frame.setVisible(true); 
} 

public void actionPerformed(ActionEvent evt) 

{ 
    String cmd = evt.getActionCommand(); 

    if (cmd.equals("Submit")) { 
     try { 
      SubmitData(); 
     } catch (Exception e) {} 

    } 
} 

public static void SubmitData() throws Exception { 

    s1 = textArea1.getText(); 

    String[] s2 = s1.split("\\s+"); 

    for (int i = 0; i < s2.length; i++) { 
     if (s2[i] .equals("elect")|| s2[i] .equals("selct") || s2[i].equals("slect")|| s2[i].equals("selec")|| s2[i].equals("seect") 

     { 
      textArea2.setText("use 'select' instead of " + s2[i]); 
      System.exit(0); 
     } 
     if (s2[i] == "updat" || s2[i] == "updae" || s2[i] == "updte" || s2[i] == "upate") { 
      textArea2.setText("use 'update' instead of " + s2[i]); 
      System.exit(0); 
     } 

     if (s2[i] == "delet" || s2[i] == "delte" || s2[i] == "elete" || s2[i] == "dlete") { 
      textArea2.setText("use 'delete' instead of " + s2[i]); 
      System.exit(0); 
     } 
     if (s2[i] == "fro" || s2[i] == "frm" || s2[i] == "fom") { 
      textArea2.setText("use 'from' instead of " + s2[i]); 
      System.exit(0); 
     } 
    } 
} 

編輯 - 我改變了「==」來回串比較與.equals(),但問題似乎沒有消失。

+0

歡迎來到StackOverflow!這裏有一些提示可以幫助你獲得答案: 1.如果某些東西不起作用,請發佈堆棧跟蹤,錯誤日誌等等。如果時間太長,可以將相關代碼片段發佈到像[pastebin](http://pastebin.com/)這樣的粘貼服務。從我們的角度來看 - 如果你沒有向我們展示你的輸出,那麼當你點擊按鈕時,我們很難確定你的窗口關閉的原因! –

+0

2.儘量避免在編輯時嚴重改變問題的內容。如果你編輯了錯誤/等。這很好,但一般情況下,如果你改變了內容,在「EDIT:」開頭的底部有一條線是禮貌的,所以人們知道你改變了什麼。 –

+0

3.發佈代碼時,發佈[SSCCE](http://sscce.org/)是一個好主意,它可以讓人們快速測試代碼。我們很難利用你發佈的內容,因爲它很長,並不是我們需要的。如果您需要發佈所有代碼,發佈代碼片段,然後在底部發布所有內容。 –

回答

2

System.exit(0);終止您的JVM。如果你想保留你的框架,請將其移除。

編輯的第二個問題: 你的第一個if後,更換您的if通過else if爲了使別人if當條件爲真不執行。

for (int i = 0; i < s2.length; i++) { 
    if (s2[i] .equals("elect")|| s2[i] .equals("selct") || s2[i].equals("slect")|| s2[i].equals("selec")|| s2[i].equals("seect") 
    { 
     textArea2.setText("use 'select' instead of " + s2[i]); 
    } 
    else if (s2[i] == "updat" || s2[i] == "updae" || s2[i] == "updte" || s2[i] == "upate") { 
     textArea2.setText("use 'update' instead of " + s2[i]); 
    } 

    else if (s2[i] == "delet" || s2[i] == "delte" || s2[i] == "elete" || s2[i] == "dlete") { 
     textArea2.setText("use 'delete' instead of " + s2[i]); 
    } 
    else if (s2[i] == "fro" || s2[i] == "frm" || s2[i] == "fom") { 
     textArea2.setText("use 'from' instead of " + s2[i]); 
    } 
} 
+0

是否有任何替代方案可用於停止進一步執行代碼而不會中斷框架? – sam

+0

當然,我的答案在編輯中。 – davidxxx