Gui에 관해 몇 가지 질문을하고 싶습니다. Gui 및 Listeners 이해하기
나는 다음과 같은 예를 보았다 :public class ShellWithButton {
public static void main(String[] args) {
Display display = Display.getDefault();
Shell shell = newShell (display);
Button ok = newButton (shell, SWT.PUSH);
ok.setText ("Push Me!");
ok.addSelectionListener(new ButtonHandler());
ok.setLocation(0,0);
ok.setSize(100,30);
shell.pack();
shell.open();
while(!shell.isDisposed()) {
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
public class ButtonHandler
implements SelectionListener {
public void widgetSelected(SelectionEvent e) {
if(e.getSource() instanceofButton) {
Button b = (Button) e.getSource();
b.setText("Thanks!");
}
}
public voidwidgetDefaultSelected(SelectionEvent e){
// TODO Auto-generated method stub
}
}
(I) - 누군가가 버튼 - 어떻게 프로그램이 widgetSelected을 활성화 알고 있나요 밀어? 단추가 ButtonHandler 수신기를 자체에 추가했음을 알 수 있지만 왜 단추를 누르고 상자를 클릭하는 것만으로 이벤트를 ButtonHandler에 전송할 수 있습니까? 푸시가이 수신기로 전송 된 곳을 볼 수 없습니다.
(ii) - ButtonHandler의 인스턴스를 리스너에 보내려면 어떻게해야합니까? 그게 무슨 뜻 이죠?
(iii) - 버튼을 누르면 어떻게됩니까? 이 사건은 무엇입니까? 이벤트는 버튼 자체의 인스턴스입니까?
(iv) - Button b = (Button) e.getSource();
왜 소스를 전송해야합니까? 작성된 이벤트는 버튼의 인스턴스 인 ok에서만 올 수 있습니다.
(v) - 원래 버튼의 제목이 변경되는 이유는 무엇입니까? B를 변경합니다.
대단히 감사합니다!
감사합니다. oscar. 이 리스너는 항상 버튼 자체와 관련이 있습니까? 쉘에서 텍스트를 변경하려고한다고 가정 해 봅시다. 단추에이 수신기를 추가해야합니까? 아니면 셸에 추가 할 수 있습니까? – Numerator
@Nir 예이 청취자는,이 버튼이이 이벤트에 등록되어있는 한, 이벤트를 버튼에 발송합니다. Shell 클래스가 무엇인지 모르겠지만 텍스트를 변경하려면 이벤트가 발생할 때 변경하려면 텍스트를 리스너로 추가해야합니다. –