2016-04-18 14 views
0

複数のモニタにオーバーレイを描画したいので、すべてのタスクバー、基本的にすべての要素をカバーする必要があります。私は4.5.2でSWTを使用しています。複数のモニタにオーバーレイ描画する

私はこれまで何をしていますか?

shell = new Shell(display.getActiveShell(), SWT.ON_TOP | SWT.DOUBLE_BUFFERED); 
shell.setBounds(display.getBounds()); 

このソリューションは、私のDebian(ストレッチ)で完全に機能します。 ウィンドウに問題があります。ウィンドウズ10をテストしましたが、タスクバーが上にありますが、オーバーレイが描画されます。

N個のモニタでN個のシェルをアクティブにしてフルスクリーン表示していると思いますが、複数のシェルでフルスクリーンをアクティブにすることはできません。

誰にも分かりませんか?たぶん私は別のライブラリを使用しようとする必要がありますか?それはオーバーレイを描画しますが、win10上のタスクバーがそれをカバーしているため

答えて

1

総スピットボールが、

Rectangle rect = new Rectangle(0, 0, 0, 0); 
Stream.of(shell.getDisplay().getMonitors()).map(Monitor::getBounds).forEach(p->rect.add(p)); 
shell.setBounds(rect); 
+0

私の問題は、ディスプレイの境界ではありません:/それはSWTや窓の制限があります場合、私は知らない、とにかくありがとう助けようとしています –

+0

'Display d = Display.getDefault(); \t \t最終シェルs1 =新しいシェル(Display.getCurrent()、SWT.ON_TOP | SWT.DOUBLE_BUFFERED); \t \t s1.setBounds(d.getBounds()); \t \t s1.setLayout(new FillLayout()); \t \tボタンb =新しいボタン(s1、SWT.NONE); \t \t b.setText( "getBounds()"); \t \t b.addListener(SWT.Selection、E - > { \t \t \t s1.dispose(); \t \t})。 \t \t s1.open(); \t \t一方{ \t \t \t IF(d.readAndDispatch()!){ \t \t \t \t d.sleep()(s1.isDisposed()!)。 \t \t \t} \t \t} ' これは64ビットのJRE 1.8.0_77を実行しているWindows 7上で動作します。 画面全体をカバーし、タスクバーを付属します。 – pretzalcoatl

+0

@pretzalcoatl OPのオリジナルソリューションは、Windows 7でも正常に動作します。 Windows 10がここで問題になっているようです。 – Baz

関連する問題