Ich hab eine kleine SWT Applikation die ein Main Window besitzt, von diesem möchte ich ein option dialog aufrufen (class: dialog). Die Klasse dialog braucht eine "parent-shell". Nun müsste diese shell ja die von dem Main Window sein.
Ich habs mit "getParent().getShell()" beim aufruf im Main Window probiert. Jedoch wird sobald ich den Button der dafür zuständig ist drücke schließt sich das ganze programm.
Ist die shell die falsche oder krieg ich mit getParen().getShell() gar nicht die richtige shell?
oder mach ich irgendwas anderes falsch.
auszug aus main Window:
option dialog:
Ich habs mit "getParent().getShell()" beim aufruf im Main Window probiert. Jedoch wird sobald ich den Button der dafür zuständig ist drücke schließt sich das ganze programm.
Ist die shell die falsche oder krieg ich mit getParen().getShell() gar nicht die richtige shell?
oder mach ich irgendwas anderes falsch.
auszug aus main Window:
Code:
public class GUIMain extends Shell {
public static void main(String args[]) {
try {
Display display = Display.getDefault();
GUIMain shell = new GUIMain(display, SWT.SHELL_TRIM);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public GUIMain(Display display, int style) {
super(display, style);
createContents();
}
protected void createContents() {
... //andere oberflächen elemente
final Button but_database = new Button(composite, SWT.NONE);
but_database.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
GUIDbConnector db = new GUIDbConnector(getParent().getShell());
db.open();
}
});
... //andere oberflächen elemente
}
}
option dialog:
Code:
public class GUIDbConnector extends Dialog {
private List connectionList;
private Text password;
private Text user;
private Text host;
protected Object result;
protected Shell shell;
public GUIDbConnector(Shell parent, int style) {
super(parent, style);
}
public GUIDbConnector(Shell parent) {
this(parent, SWT.NONE);
}
public Object open() {
createContents();
shell.open();
shell.layout();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
return result;
}
protected void createContents() {
... //oberflächenelemente
}
}