private JLabel someJLabel = new JLabel("some text");
...
System.out.println (someJLabel.getText() == "some text"); // returns true
를 잘 작동하지만 JTextField를
private JTextField someJTextField = new JTextField("some text");
...
System.out.println (someJTextField.getText() == "some text"); // returns false
사용할 때 나는 someJTextField.getText().equals("some text");
사용하는 경우는 잘 작동한다고 알고있다.
그래서 왜 JLabel의 작동하지만, JTextField를하지
편집 : 그래 내가 문자열 .equals
를 사용하는 것을 알고,이 글 http://javatechniques.com/blog/string-equality-and-interning/을 읽었지만 내가 사용하는 것으로 이미 알려져있다 "텍스트"그것 때문에 동일한 문자열 개체를 참조 할 수 있습니다.
JLabel에서 setText (t)는 this.text = t와 같습니다. JTextField에서는 this.getDocument()와 같습니다. insertText (t); 그래서 t는 보존되지 않습니다. jdk의 소스에서 이러한 클래스의 setText() 메소드 구현을 살펴보면 더 명확 해집니다. –