2013-02-20 18 views
6

I SWT-Assistent Seite als meine Eltern-Shell haben, für eine andere Shell auf Schaltfläche anklickt Erstellen Ich schreibe Code folgendeErzeugungs swt Schale in der Mitte seiner Mutter Shell

Shell permissionSetShell = new Shell(Display.getCurrent().getActiveShell(), SWT.CENTER|SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL); 
permissionSetShell.setText(PropertyClass.getPropertyLabel(QTLConstants.PERMISSION_SET_COLUMN_LABEL)); 

// Add shell to the center of parent wizard 
permissionSetShell.setLayout(componentsRenderer.createGridLayout(1, false, 0, 5, 0, 0));  
Monitor primary = Display.getCurrent().getPrimaryMonitor(); 
Rectangle bounds = primary.getBounds(); 
Rectangle rect = Display.getCurrent().getActiveShell().getBounds(); 
int x = bounds.x + (bounds.width - rect.width)/2; 
int y = bounds.y + (bounds.height - rect.height)/2;    
permissionSetShell.setLocation (x, y); 

aber als die Schale Kind bedeutet dies, Shell ist nicht in der Mitte des SWT-Assistenten platziert, die Mutterschale ist warum?

+0

Haben Sie überprüft, ob "bounds" und "rect" wirklich die richtigen Informationen enthalten? – Baz

+0

Baz, ja es enthält Informationen –

+0

Aber ist die Information korrekt? – Baz

Antwort

7
Rectangle screenSize = display.getPrimaryMonitor().getBounds(); 
shell.setLocation((screenSize.width - shell.getBounds().width)/2, (screenSize.height - shell.getBounds().height)/2); 
1

Wenn Sie einen Dialog oder eine untergeordnete Komponente Schreiben Sie getParent wollen stattdessen verwenden, die Anzeige für den primären Monitor zu fragen, so dass das Fenster auf dem aktuellen Bildschirm für mehrere Monitor-Setups zentriert ist.

Rectangle parentSize = getParent().getBounds(); 
Rectangle shellSize = shell.getBounds(); 
int locationX = (parentSize.width - shellSize.width)/2+parentSize.x; 
int locationY = (parentSize.height - shellSize.height)/2+parentSize.y; 
shell.setLocation(new Point(locationX, locationY)); 
+0

Mein Problem genau, das sollte die akzeptierte Antwort sein, weil heutzutage mehrere Monitor-Setups nicht selten sind, und die "+ parentSize.x;" ist entscheidend und es fehlt in der anderen Antwort. –

0

Ich denke, die beste Art SWT.SHEET für einen solchen Dialog zu verwenden wäre.

Verwandte Themen