마우스 이벤트 관련..
Java/이론..2007. 10. 22. 22:05
프로젝트를 진행하던중.. (혼자하는 -_-;;)
동적으로 레이블을 생성해서 레이블을 클릭했을시 해당 레이블의 툴팁텍스트를 얻어 오려고 했더니
안되서 몇일간 좀 삽질을 했었다.
이렇게 할려고 했더니.. 당연히 i 값을 런타임에는 그 레이블 마지막 갯수 + 1로 고정이 되어 버리기 때문에 얻어 올 수가 없었다.
연구실 형이 알려줬는데.
위와 같이 마우스 이벤트로부터 getSource() 메소드로 얻어온걸 레이블로 캐스팅 해서 툴팁 텍스트를 얻어 올 수 있었다.
동적으로 레이블을 생성해서 레이블을 클릭했을시 해당 레이블의 툴팁텍스트를 얻어 오려고 했더니
안되서 몇일간 좀 삽질을 했었다.
for (i = 0; i < result.length; i++) {
samples[i] = new CLabel(c, SWT.NONE);
samples[i].setImage(resize(new Image(Display.getCurrent(), filePath + result[i]), 100, 100));
samples[i].setToolTipText(result[i]);
samples[i].addMouseListener(new MouseAdapter(){
public void mouseDoubleClick(MouseEvent e) {
System.out.println(samples[i].getToolTipText());
}
} );
samples[i] = new CLabel(c, SWT.NONE);
samples[i].setImage(resize(new Image(Display.getCurrent(), filePath + result[i]), 100, 100));
samples[i].setToolTipText(result[i]);
samples[i].addMouseListener(new MouseAdapter(){
public void mouseDoubleClick(MouseEvent e) {
System.out.println(samples[i].getToolTipText());
}
} );
이렇게 할려고 했더니.. 당연히 i 값을 런타임에는 그 레이블 마지막 갯수 + 1로 고정이 되어 버리기 때문에 얻어 올 수가 없었다.
연구실 형이 알려줬는데.
samples[i].addMouseListener(new MouseAdapter(){
public void mouseDoubleClick(MouseEvent e) {
System.out.println(((CLabel)e.getSource()).getToolTipText());
}
} );
public void mouseDoubleClick(MouseEvent e) {
System.out.println(((CLabel)e.getSource()).getToolTipText());
}
} );
위와 같이 마우스 이벤트로부터 getSource() 메소드로 얻어온걸 레이블로 캐스팅 해서 툴팁 텍스트를 얻어 올 수 있었다.
e.getSource();
라는거 처음 알았는데
자바독에서
return 값이 이벤트가 최초로 발생한 객체
라고 설명해 주네요.
지금 만드는 것도 대충 마무리가 되 가는데 어서 마무리하고 플러그인 프로젝트로 변신 시켜 봐야겠습니다.