2014-11-20 4 views
1

Я нахожусь в начале программирования GUI в JFace/SWT. Прежде чем я работал с обычным SWT-окном (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.wb.ercp.doc.user%2Fhtml%2Fwizards%2FeRCP%2Fapplication_window.html), и сегодня я впервые попробовал окно приложения JFace.Минимальный размер окна приложения JFace

Теперь я хочу, чтобы установить минимальный размер этого окна .. В SWT он работал с

shell.setMinimumSize(100,100) 

, но в моем org.eclipse.jface.window.ApplicationWindow нет такого способа ..

Я попытался

this.createShell().setMinimumSize(100, 100); 

(моя реализация "общественного класса MainView расширяет ApplicationWindow {")

но не работает.

this.getShell() 

возвращает null.

Кстати, я искал хорошую документацию о JFace в gernal, сейчас специально для окна приложения. Но я не мог найти ничего действительно хорошего и обширного.

Документация в SWT, особенно JFace, очень неприятна. Слишком плохо, потому что в ней есть интересные функции.

Что вы думаете?

ответ

2

Override метод configureShell и установить минимальный размер есть:

@Override 
protected void configureShell(Shell newShell) 
{ 
    super.configureShell(newShell); 

    newShell.setMinimumSize(100, 100); 
} 
0

Как вы можете видеть из документации по методу createShell, он создает новую оболочку. Вам нужно использовать существующую/созданную оболочку вашего окна.

Вы можете получить его из родительского композита приложения. Пожалуйста, обратитесь к createContents метод в следующем фрагменте:

package helloproject; 

import org.eclipse.jface.window.ApplicationWindow; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Control; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Label; 

public class HelloWorld extends ApplicationWindow { 

    public HelloWorld() { 
     super(null); 
    } 

    /** 
    * Runs the application 
    */ 
    public void run() { 
     setBlockOnOpen(true); 
     open(); 
     Display.getCurrent().dispose(); 
    } 

    protected Control createContents(Composite parent) { 
     // Create a Hello, World label 
     Label label = new Label(parent, SWT.CENTER); 
     label.setText("Hello, World"); 

     // Set the minimum size 
     parent.getShell().setMinimumSize(200, 200); 

     return label; 
    } 

    public static void main(String[] args) { 
     new HelloWorld().run(); 
    } 
} 
Смежные вопросы