2014-02-11 3 views
-3

이상한 일이 내 코드와 함께 진행됩니다.동작 버튼 및 if 문

저는 작은 형태 (잘 설계되지는 않았지만 지금은 할 것입니다)입니다. 사용자 이름과 암호를 입력 한 다음 submit을 누릅니다.

단추에 대한 동작 수신기 메서드를 추가했습니다. 처음에는 그 중 하나만있었습니다 :

dispose();

실제로 실제로 누르면 창이 닫힙니다.

코드에서 볼 수있는 것처럼 if 문을 추가하면 값이 올바른 경우 아무 것도 수행하지 않지만 잘못된 경우 다른 부분에 쓴 내용을 수행합니다 ....

'

내가 돈 ...이 방법은 사용되지 않으며 Eclipse는 암호에 대한 gettext에 방법을 통해 라인을두고 : 나는 & &과 passwordfield과 다른 조건을 추가하려고하면

, 그것은 나에게 오류 메시지를 줄 그것을 얻는다, 어떻게하면 'if'없이 작동 할 수 있고, 'if'와 함께 작동하지 않고, & & ....로 감사를 표한다. ...

package HR; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JLabel; 
import javax.swing.JPasswordField; 
import javax.swing.JFormattedTextField; 
import javax.swing.JButton; 

import java.awt.GridLayout; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class SignIn extends JFrame 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public SignIn() 
    { 
     this.setTitle("HR SYSTEM LOGIN SCREEN"); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setBounds(100, 100, 308, 179); 

     JPanel contentPane = new JPanel(new GridLayout(3,3,1,15)); 
     this.getContentPane().add(contentPane); 

     JLabel userName = new JLabel("User Name"); 
     contentPane.add(userName); 

     JLabel spaces2 = new JLabel(""); 
     contentPane.add(spaces2); 

     final JFormattedTextField userText = new JFormattedTextField(); 
     contentPane.add(userText); 

     JLabel password = new JLabel("Password"); 
     contentPane.add(password); 

     JLabel spaces3 = new JLabel(""); 
     contentPane.add(spaces3); 

     final JPasswordField passwordText = new JPasswordField(); 
     contentPane.add(passwordText); 

     JLabel spaces1 = new JLabel(""); 
     contentPane.add(spaces1); 

     JButton signButton = new JButton("Sign In"); 
     contentPane.add(signButton); 

     JLabel spaces4 = new JLabel(""); 
     contentPane.add(spaces4); 

     signButton.addActionListener(new ActionListener() 
     { 

      @Override 
      public void actionPerformed(ActionEvent e) 
      { 

       if (userText.getText()=="ABC") 
       { 
        dispose(); 
       } 
       else userText.setText("ABC"); 
      } 
     }); 


    } 

} 
+0

사용 String.equals 방법) (등호 대신 ==와 문자열을 비교할 수 있습니다. –

+1

문자열 비교는 == 대신에 .equals()를 사용하여 수행해야합니다. if (userText.getText(). equals ("ABS") –

답변

2

당신은 당신의 경우 상태에서 문자열을 비교하는

if (userText.getText().equals("ABC") { 
    ... 
} 
+0

그래, 고마워. ("1234")) 이클립스는 나에게이 경고 메시지를 다시주고 패스워드의 getText 메소드 위에 줄을 넣었다. – user3275222

+0

그래, 맞아. 강사는 OOP 기본 Java 과정을 수행하는 동안 문자열 메서드를 다른 메서드와 비교하지 말고 equals() 메서드를 사용하지 말 것을 말했습니다. +1 – msmolcic

+1

getPassword()를 사용해야합니다. [여기] (http : /docs.oracle.com/javase/7/docs/api/javax/swing/JPasswordField.html) 항상 문서를 확인하십시오. – csmckelvey