this가 참 어렵네요..
슬예
인터넷 돌아다니다가 본 소스입니다.
짧길래 한번 분석해보려고 했더니..
까다롭더라구요..
특히...빨간색으로 해놓은 this때문에 일주일간 고민했는데.
오늘 선생님께 물어보니 내부클래스이기때문에 위클래스로 잡는다고 하시더군요.
암튼 쩜 나오면 첫번째 긴장하고 this나오면 두번째 긴장한다는...ㅡㅡ;
사실 아래 소스가 완벽히 제꺼가 된건 아니지만욤..
import java.awt.*;
import java.awt.event.*;
public class AlertFrame extends Frame{
public AlertFrame(){
Button button = new Button(회원가입);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
new MsgBox(AlertFrame.this, 가입환영);
play();
}
});
add(button);
pack();
this.setSize(300,200);
this.setVisible(true);
}
private void play(){
System.out.println(다시작성하시요);
}
public static void main(String[] args){
new AlertFrame();
}
}
class MsgBox extends Dialog{
private String message;
public MsgBox(Frame owner, String message){
super(owner, Message Bo, true); // true: dialog를 modal로 설정
this.message = message;
init();
pack();
setVisible(true);
}
private void init(){
Button button = new Button(회원가입);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev){
dispose();
}
});
add(new Label(message), BorderLayout.CENTER);
add(button, BorderLayout.SOUTH);
}
}
-
혜린
감사합니다~~
-
이뻐
-0-;; 아녀.. 밑에서 System.out.println(AlertFrame.this.getClass().getName() ); 이렇게하시면 해당 객체의 이름을 알수있죠 ^^;
-
보물선
아.. 그런 메소드가 있나보네요..AlertFrame.this자리에 AlertFrame.this.getClass().getName() 을 적어넣으면 되는건가요??
-
개랑
this가 헷갈리실때엔 좋은 해결책은 this가 가리키는 객체의 클래스명을 찍어보세요.
AlertFrame.this.getClass().getName() 하시면 됩니다.
건강하세요.~