SWT窗口居中

一、使用SWT本身的Display.getClientArea().width. height

        
////
        loginShell.setLocation(display.getClientArea().width  /   2   -  loginShell.getSize().x / 2 , display
                .getClientArea().height 
/   2   -  loginShell.getSize().y / 2 );
        
////
二、使用SWT本身的loginShell.getMonitor().getBounds() 与loginShell.getBounds()
         ////
        Monitor primary  =  loginShell.getMonitor();
        Rectangle bounds 
=  primary.getBounds();
        Rectangle rect 
=  loginShell.getBounds();
        
int  x  =  bounds.x  +  (bounds.width  -  rect.width)  /   2 ;
        
int  y  =  bounds.y  +  (bounds.height  -  rect.height)  /   2 ;
        
if  (x  <   0 )
            x 
=   0 ;
        
if  (y  <   0 )
            y 
=   0 ;
        loginShell.setLocation(x, y);
        
////
原例:
package  demo;

import  org.eclipse.swt.SWT;
import  org.eclipse.swt.events.MouseAdapter;
import  org.eclipse.swt.events.MouseEvent;
import  org.eclipse.swt.widgets.Button;
import  org.eclipse.swt.widgets.Display;
import  org.eclipse.swt.widgets.Label;
import  org.eclipse.swt.widgets.Shell;
import  org.eclipse.swt.widgets.Text;

public   class  Login  {

    
/** *//**
     * Launch the application
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
final Display display = Display.getDefault();
        
final Shell loginShell = new Shell();
        loginShell.setSize(
424222);
        loginShell.setText(
"Login");
        
////
        loginShell.setLocation(display.getClientArea().width / 2 - loginShell.getSize().x/2, display
                .getClientArea().height 
/ 2 - loginShell.getSize().y/2);
        
////
        loginShell.open();

        
final Label label1 = new Label(loginShell, SWT.NONE);
        label1.setAlignment(SWT.RIGHT);
        label1.setText(
"ユーザID:");
        label1.setBounds(
101466512);

        
final Label label2 = new Label(loginShell, SWT.NONE);
        label2.setAlignment(SWT.RIGHT);
        label2.setBounds(
101816512);
        label2.setText(
"パスワード:");

        
final Text userName = new Text(loginShell, SWT.BORDER);
        userName.setBounds(
1734210520);

        
final Text password = new Text(loginShell, SWT.BORDER);
        password.setBounds(
1737710520);

        
final Button btnLogin = new Button(loginShell, SWT.NONE);
        btnLogin.addMouseListener(
new MouseAdapter() {
            
public void mouseDown(MouseEvent e) {
                
try {
                    MaterialUpload window 
= new MaterialUpload();
                    loginShell.close();
                    window.open();
                }
 catch (Exception ex) {
                    ex.printStackTrace();
                }

            }

        }
);
        btnLogin.setText(
"ログイン");
        btnLogin.setBounds(
1011305922);

        
final Button btnClear = new Button(loginShell, SWT.NONE);
        btnClear.addMouseListener(
new MouseAdapter() {
            
public void mouseDown(MouseEvent arg0) {
                userName.setText(
"");
                password.setText(
"");
            }

        }
);
        btnClear.setText(
"クリア");
        btnClear.setBounds(
1831305922);

        
final Button btnClose = new Button(loginShell, SWT.NONE);
        btnClose.addMouseListener(
new MouseAdapter() {
            
public void mouseDown(MouseEvent arg0) {
                loginShell.close();
            }

        }
);
        btnClose.setBounds(
2641305922);
        btnClose.setText(
"閉じる");
        loginShell.layout();
        
while (!loginShell.isDisposed()) {
            
if (!display.readAndDispatch())
                display.sleep();
        }

    }


}

你可能感兴趣的:(SWT窗口居中)