나는 두 개의 대화 상자를 동시에 만들었습니다. 이제 한 대화 상자를 다른 대화 상자에 도킹하고 싶습니다. 그래서 사람이 움직이면 다른 사람도 움직일 것입니다.자바가 다른 대화 상자에 대화 상자를 도킹합니다
리스너를 구현하려고했지만 대화 상자가 닫힌 후에 호출되기 때문에 작동하지 않습니다.
public class DialogOne extends TitleAreaDialog {
public DialogOne(Shell parentShell) {
super(parentShell);
}
@Override
public void create() {
super.create();
setTitle("Dialog One");
}
@Override
public int open() {
Display.getCurrent().asyncExec(new Runnable() {
@Override
public void run() {
DialogTwo dialogTwo = new DialogTwo(getShell());
dialogTwo.open();
dialogTwo.addControlListener(new ControlAdapter() {
@Override
public void controlMoved(ControlEvent e) {
System.out.println("Moved");
}
});
}
});
return super.open();
}
@Override
protected void setShellStyle(int newShellStyle) {
super.setShellStyle(SWT.CLOSE | SWT.MODELESS | SWT.BORDER | SWT.TITLE);
setBlockOnOpen(false);
}
}
public class DialogTwo extends TitleAreaDialog {
private Composite composite;
public DialogTwo(Shell parentShell) {
super(parentShell);
}
@Override
public void create() {
super.create();
setTitle("Dialog Two");
}
@Override
protected void setShellStyle(int newShellStyle) {
super.setShellStyle(SWT.CLOSE | SWT.MODELESS | SWT.BORDER | SWT.TITLE);
setBlockOnOpen(false);
}
@Override
protected Control createDialogArea(Composite parent) {
composite = (Composite) super.createDialogArea(parent);
return composite;
}
public void addControlListener(ControlListener listener) {
composite.addControlListener(listener);
}
}
두 번째 대화 상자에서 경계를 가져 와서 두 번째 대화 상자 옆의 위치를 다시 잡으려면 어떻게해야합니까? 두 번째가 움직일 때도.
"코드 스 니펫"기능을 사용하지 마십시오. JavaScript로만 사용됩니다. 나는 이번에 당신을 위해 그것을 제거했습니다. – Baz