2013-12-06 2 views
0

Это первый раз для меня с помощью SWT, и я делаю Войти оболочки, как это:SWT Текстовых полей и кнопки слишком маленькие

loginshell = new Shell(swtFrameDisp,SWT.ON_TOP); 
     loginshell.setLayout(new GridLayout(1, false)); 
     loginshell 
       .setSize(textBoxHeight + 100, textBoxHeight + 100); 

     GridData data = new GridData(SWT.FILL, SWT.BEGINNING, true, 
       false); 

     // Center loginscreen! 
     Monitor primary = swtFrameDisp.getPrimaryMonitor(); 
     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; 
     loginshell.setLocation(x, y); 

     Label label = new Label(loginshell, SWT.NONE); 
     label.setLayoutData(data); 
     label.setText("Login to Messupport.com"); 

     // text field settings 
     userNameField = new Text(loginshell, SWT.BORDER); 
     userNameField.setLayoutData(data); 
     userNameField.setTextLimit(100); 
     userNameField.setText("username"); 

     passwordField = new Text(loginshell, SWT.PASSWORD 
       | SWT.BORDER); 
     passwordField.setLayoutData(data); 
     passwordField.setBounds(100, 50, 100, 20); 
     passwordField.setTextLimit(100); 
     Button bn = new Button(loginshell, SWT.FLAT); 
     bn.setLayoutData(data); 
     bn.setText("Login"); 
     loginshell.setDefaultButton(bn); 

Однако текстовые поля и моя кнопка слишком малы, я не знаю почему. Но может ли кто-нибудь просветить меня? enter image description here

Я уже пытался использовать setBounds, но без результатов. Так что это возможно что-то с макетом. Я хотел бы знать, как это решить, спасибо.

ответ

1

Вы используете тот же объект GridData для всех элементов управления. Вы должны создать новый GridData для каждого объекта, поскольку он используется для хранения информации о макете для элемента управления.

От GridData JavaDoc:

ПРИМЕЧАНИЕ: Не используйте объекты GridData. Каждый элемент управления в Composite, который управляется GridLayout, должен иметь уникальный объект GridData.

+0

Да, я думаю, что это может быть проблема! Благодаря! –

Смежные вопросы