자바 이벤트 처리기 질문드립니다.. 왜 안되는 걸까요?ㅜㅜㅜ
조회수 2147회
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class MyFrame extends JFrame{//프레임 클래스
private JButton b1;
private JPanel panel;
private JLabel label;
private JTextField t1;
private JTextField resultTextField;
public MyFrame(){
setSize(600,500); //프레임 크기 조정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("♥Guess my 이니셜♥");
panel = new JPanel();
panel.setLayout(null);
label = new JLabel("① 내 이니셜 입력하시오.");
t1 = new JTextField(5); //마일 단위의 거리를 담을 텍스트필드
b1 = new JButton("입력");
b1.setBackground(Color.ORANGE); //버튼의 색을 주황색으로 변경
resultTextField = new JTextField(30); //마일을 킬로미터로 변환시킨 결과값을 당을 텍스트필드
b1.addActionListener(new MyListener()); //버튼에 이벤트 발생객체 생성
label.setBounds(10, 10, 300, 70);
t1.setBounds(320, 25, 100, 30);
b1.setBounds(430, 22, 70, 35);
resultTextField.setBounds(55, 109, 200, 30); //알맞은 위치에 기능들 배치
panel.add(label,BorderLayout.LINE_START);
panel.add(t1,BorderLayout.LINE_START);
panel.add(b1,BorderLayout.CENTER);
panel.add(resultTextField,BorderLayout.CENTER); //패널에 기능 추가
add(panel);
setVisible(true);
}
private class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if( e.getSource() == b1){
resultTextField.setText("");
String name = t1.getText(); //텍스트필드의 값을 문자열 name에 넣어줌
final String myName = "KJW";
System.out.println(name);
System.out.println(myName);
if(name != myName )
resultTextField.setText("KJW아니야?ㅜㅜㅜ");
else
resultTextField.setText("맞았어!");
}
}
}
}
public class ActionEventListener{
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame f = new MyFrame();
}
}
이 코드는 제 이니셜(KJW)를 입력하고 버튼을 눌렀을 때에 맞았다는 메시지가 텍스트 필드에 뜨는 프로그램으로 만들었는데요!! 분명히 제가 KJW라고 입력했는데도 불구하고 KJW라고 입력하지 않았다고 뜨는데 도대체 왜 그러는 것일까요??
if(name != myName ) resultTextField.setText("KJW아니야?ㅜㅜㅜ"); else resultTextField.setText("맞았어!");
이 부분이 잘못된건가요..? 답변 꼭 부탁드립니다. 궁금해서 죽을 것 같습니다..ㅎㅎㅎ 부탁드립니다 자바 고수님들!!
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
자바의 객체에서
==
연산 이나!=
연산은 정확하게 같은 인스턴스(메모리 주소가 같은 인스턴스)를 의미합니다.따라서 문자열(객체)의 값이 같음을 확인하려면 equals 를 사용해보세요.
if( myName.equals(name) ) { .... }
- 아이고 감사합니다!!! 자바 수업에 들었던 내용인데 까먹고있었어요..ㅎㅎㅎ ==는 '객체'를, .equals는 '값'을 비교한다는 것!! 감사합니다 정말~^^* 알 수 없는 사용자 2017.1.7 13:26
댓글 입력