2014-10-24 3 views
0

내 창은 2 개의 텍스트 필드 (사용자 이름과 비밀번호)와 1 개의 버튼 (로그인 버튼)이있는 로그인 폼입니다. 자바 스윙 - 수행 된 버튼 동작이 작동하지 않습니다.

나는 창을 설계 도와 넷빈즈를 사용하고이 로그인 버튼의 actionPerformed 메소드입니다 :

private void loginButtonActionPerformed(ActionEvent evt) 
{ 
    String password = new String(this.passwordField.getPassword()); 

    if (this.userNameTextField.getText() == "system" && password == "admin") 
    { 
     JOptionPane.showMessageDialog(null, "good"); 
    } 

} 

로그인 버튼이 아무것도하지 않았다 그리고 내가 만약 문장 것을 발견하기 때문에 응용 프로그램을 디버깅 심지어 읽지 않습니다. if 문장을 제거하고 로그인 버튼을 누르면 메시지가 나타납니다.

내가 뭘 잘못하고 있니?

+1

합니다. 무엇보다도 스윙 튜토리얼을 읽어야합니다 .. – subash

+2

'=='을 사용하여 문자열을 비교하지 마십시오. 대신 'equals (...)'또는 'equalsIgnoreCase (...)'메소드를 사용하십시오. 이해 '=='두 * 객체 *가 당신이 관심이없는 것과 같은지 확인합니다. 다른 방법은 두 개의 문자열이 같은 순서로 같은 문자를 가지고 있는지 확인합니다. 그 것이 중요합니다 이리. –

+0

'Window Builder '로 응용 프로그램을 빌드하기 전에 먼저 구현중인 주제의 개념을 이해해야합니다. –

답변

3

== 연산자를 사용하여 문자열을 비교하고 있는데 이는 잘못된 것입니다.

하는 것은 우리를 바랍니다 :

string1.equals(string2); 

관련 예 : 그는 그가 :)

password.equals("admin"); 
2

문자열은 등호와 비교해야합니다

this.userNameTextField.getText().equals("system") 

이 문자열의 텍스트를 비교합니다.
은 당신이 지금하고있는 것은 참조의 비교 (즉, 여기서 메모리에 문자열 거짓말)

그리고 코멘트에서 언급 한 바와 같이 :하는 ActionListener에 JOptionPane.showMessageDialog(null, "good");를 사용하여이 전체 GUI 스레드를 블록으로 나쁜 생각

관련 문제