如何限制Eclipse4窗口的最小大小

如何限制Eclipse4窗口的最小大小,eclipse,window,size,minimum,e4,Eclipse,Window,Size,Minimum,E4,我正在制作一个基于Eclipse4框架的应用程序。我想知道如何控制应用程序窗口的最小大小。似乎在e4xmi文件中无法为此定义任何属性 有人知道怎么做吗 我在eclipsecommunityforum()中发现一个线程,它说可以通过创建自己的渲染器来实现。我该怎么做呢 非常感谢:)假设您正在使用内置的SWT渲染器,您还可以监听E4 MWindow元素的创建,并获得对底层SWT Shell的访问权。在本例中,侦听器注册在一个插件中,您可以将该插件添加到e4xmi中 import javax.anno

我正在制作一个基于Eclipse4框架的应用程序。我想知道如何控制应用程序窗口的最小大小。似乎在e4xmi文件中无法为此定义任何属性

有人知道怎么做吗

我在eclipsecommunityforum()中发现一个线程,它说可以通过创建自己的渲染器来实现。我该怎么做呢


非常感谢:)

假设您正在使用内置的SWT渲染器,您还可以监听E4 MWindow元素的创建,并获得对底层SWT Shell的访问权。在本例中,侦听器注册在一个插件中,您可以将该插件添加到e4xmi中

import javax.annotation.PostConstruct;

import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.workbench.UIEvents;
import org.eclipse.swt.widgets.Shell;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;

public class MinSizeAddon {
    @PostConstruct
    public void init(final IEventBroker eventBroker) {
        EventHandler handler = new EventHandler() {
            @Override
            public void handleEvent(Event event) {
                if (!UIEvents.isSET(event))
                    return;

                Object objElement = event.getProperty(UIEvents.EventTags.ELEMENT);
                if (!(objElement instanceof MWindow))
                    return;

                MWindow windowModel = (MWindow)objElement;
                Shell theShell = (Shell)windowModel.getWidget();
                if (theShell == null)
                    return;

                theShell.setMinimumSize(400, 300);
            }
        };
        eventBroker.subscribe(UIEvents.UIElement.TOPIC_WIDGET, handler);
    }
}

请注意,这将对应用程序中的任何mWindows执行,并且可以有更多mWindows(即,当MPart从MPart堆栈分离到单独的窗口中时)。如果要将执行限制到特定的MWindows,我建议在e4xmi中的窗口中添加一个标记,并在设置最小大小之前检查此标记。

如果仍有人希望在e4应用程序中执行此操作,并且不想滚动自己的渲染器,您只需在零件类的后期构造中执行以下操作:

@PostConstruct
public void postConstruct(Composite parent) {
  parent.getShell().setMinimumSize(300, 300);
  //...
}
框架传入的父级
复合
允许您访问
外壳
,该外壳允许您设置最小大小。这将阻止将应用程序的大小调整为小于指定的最小大小(以像素为单位)