我有一個主父殼和一個子殼。子shell是用於某些設置的。完成設置後。我想關閉子shell並繼續使用父shell。我正在使用display_Settings.dispose();
來關閉子shell。但是這會關閉這兩個shell(父母和孩子)。當我只點擊子殼的紅色X按鈕時,只有子殼關閉。這就是我要的。我怎樣才能實現它?另外,當子shell打開時,可以在父shell上操作/單擊按鈕。我想禁止這個,直到我完成了子shell中的設置(直到我關閉子shell)爲止。用類似紅色的X按鈕關閉子彈殼
下面是我如何打開父shell的子shell:
btnSettings.addListener (SWT.Selection, new Listener() {
@Override
public void handleEvent (Event event) { // Button Settings event
try {
my_Obect = new My_Object();
Display display_Settings = Display.getDefault();
Child_Settings shell_Settings = new Child_Settings(display_Settings, my_Object);
shell_Settings.open();
shell_Settings.layout();
while (!shell_Settings.isDisposed()) {
if (!display_Settings.readAndDispatch()) {
display_Settings.sleep();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
父GUI類和兒童GUI類是兩個不同的類,下面是我如何打開父shell:
public static void main(String args[]) {
try {
Display display = Display.getDefault();
GUI_Test shell = new GUI_Test(display);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
雖然顯示變量不同,但兩個shell關閉,實際上它們的名稱並不重要,因爲它們都是不同的類。如果你能幫助我,我會很高興!
請注意,你並不需要一個以上的事件循環('readAndDispatch()'的東西。一個是足夠的。 – Baz 2014-11-03 20:50:26
@Baz'readAndDispatch()'屬於不同的對象? – Anarkie 2014-11-05 13:31:11
你有兩個'而'事件循環,你只需要''main'方法中的一個 – Baz 2014-11-05 16:54:21