2016-07-16 1 views
0

스윙 프레임에 두 개의 텍스트 영역이 있고 그 사이에 네 개의 텍스트 영역이 있으며 netbeans를 사용하고 있습니다.스윙 프레임이 jbutton을 클릭 한 상태로 유지 또는 유지하지 않습니다.

버튼을 클릭하면 에서 getText()을 사용하여 sql 쿼리를 가져옵니다.

SubmitData()으로 입력이 처리됩니다 (즉, 쿼리를 분할 한 후 키워드의 철자를 검사 함). 해당 메서드 내에서 으로 출력을 설정하는 데는 setText() 만 사용됩니다.

문제점 : 버튼을 누른 후 프레임이 멈추거나 유지되지 않습니다. 멀리 갈 것 나던

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

Welcome to 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

관련 문제