2013-02-20 15 views
6

devo pagina della procedura guidata SWT come il mio shell genitore, per la creazione di un'altra shell su clic del pulsante sto scrivendo codice seguentegenerazione al centro del suo genitore sborsare

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); 

ma come shell figlio significa questo la shell non è posizionata al centro della procedura guidata SWT che è la shell madre perché?

+0

Hai controllato se 'bounds' e' rect' contengono davvero le informazioni corrette? – Baz

+0

Baz, sì, contiene informazioni –

+0

Ma le informazioni sono corrette? – Baz

risposta

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

Se si sta scrivendo una finestra o di un componente figlio si consiglia di utilizzare getParent invece di chiedere la visualizzazione per il monitor principale in modo che la finestra è centrata sullo schermo corrente per molteplici configurazioni di monitor.

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

Il mio problema esattamente, questa dovrebbe essere la risposta accettata perché al giorno d'oggi più configurazioni del monitor non sono rare e "+ parentSize.x;" è fondamentale e manca nell'altra risposta. –

0

Penso che il migliore sarebbe utilizzare lo stile SWT.SHEET per tale finestra di dialogo.

Problemi correlati