2017-10-04 87 views
0

我負責打開SWT外殼,使其跨越多個顯示器。SWT設置外殼大小以跨越多個顯示器

所以我依靠shell.setLocation(x, y)打開指定位置的shell和shell.setSize(width, height)來設置尺寸。

如果我使用的寬度大於單個顯示器(例如,兩個顯示器爲3840),那麼外殼被調整爲恰好適合一個顯示器(即1920)。

適用於Windows和Linux。

小例子:

public class ShellSample { 
    public static void main(final String[] args) { 
     final Display display = new Display(); 
     final Shell shell = new Shell(display, SWT.NO_TRIM); 
     final Window win = new ApplicationWindow(shell) { 
      @Override 
      protected void configureShell(final Shell shell) { 
       shell.setLocation(0, 0); 
       shell.setSize(3840, 100); 
      } 
     }; 
     win.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) { 
       display.sleep(); 
      } 
     } 
     shell.dispose(); 
     display.dispose(); 
    } 
} 
+1

請張貼[MCVE(https://stackoverflow.com/help/mcve),顯示您的問題。 – Baz

+1

@Baz謝謝 - 編碼MCVE揭示了這個問題根本與SWT無關。編碼E4應用程序,所以可能會出現一些黑魔法...... – leftbit

回答

0

愚蠢的我。

實際上,我沒有調整SWT shell的大小,而是調整了JFace窗口的大小。

因此,解決辦法是覆蓋constrainShellSize方法...