【问题标题】:Minimum size of JFace application windowJFace 应用程序窗口的最小尺寸
【发布时间】:2014-11-20 10:00:40
【问题描述】:

我刚开始使用 JFace/SWT 进行 GUI 编程。在我使用普通 SWT 窗口 (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.wb.ercp.doc.user%2Fhtml%2Fwizards%2FeRCP%2Fapplication_window.html) 之前,今天我第一次尝试了 JFace 应用程序窗口。

现在我想设置这个窗口的最小尺寸。在 SWT 中它可以使用

shell.setMinimumSize(100,100)

但在我的 org.eclipse.jface.window.ApplicationWindow 中没有这样的方法..

我试过了

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

(我的实现“公共类 MainView 扩展 ApplicationWindow {”)

但它不起作用。

this.getShell()

返回空值。

顺便说一句,我在 gernal 中搜索了关于 JFace 的良好文档,目前尤其是关于应用程序窗口的文档。但我找不到任何真正好的和广泛的东西。

SWT 中的文档,尤其是 JFace 非常令人失望。太糟糕了,因为里面有很多不错的功能。

你有什么经验?

【问题讨论】:

    标签: java swt jface


    【解决方案1】:

    覆盖configureShell 方法并在那里设置最小尺寸:

    @Override
    protected void configureShell(Shell newShell)
    {
      super.configureShell(newShell);
    
      newShell.setMinimumSize(100, 100);
    }
    

    【讨论】:

      【解决方案2】:

      createShell 方法的文档中可以看出,它创建了一个新的 shell。您需要使用现有/创建的窗口外壳。

      您可以从应用程序的父组合中获取它。请看下面sn-p中的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();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-02
        • 1970-01-01
        • 2015-05-30
        • 1970-01-01
        • 2014-03-17
        • 1970-01-01
        • 2010-10-26
        相关资源
        最近更新 更多