0

swtファイルダイアログを表示したいアプリケーションがありますが、定義された場所に表示します(下のどこかに表示したい)。そのための方法がありません。これに関するヘルプは大歓迎です...

4

3 に答える 3

1

現在、API は の場所の設定をサポートしていませんFileDialog。しかし、そのためのちょっとしたハック/回避策があります。

必要なのは、目に見えないものを作成しShellて場所を設定することだけです。FileDialogは、親に基づいてその場所を決定します。

setLocation正確な座標を知るのは少し複雑に思えますShellが、それらを知るためにいくつかの順列と組み合わせを実行することはあなたに任せます.

ここにあなたの問題を解決するコードがあります

public static String openNewShellDialog(Display display)
{
    final Shell shell = new Shell(display , SWT.APPLICATION_MODAL); 
    shell.setLayout(new GridLayout(1, false));
    System.out.println(display.getPrimaryMonitor().getClientArea());
    shell.setLocation(616, 500); //It seems the location is relative to the center of the Shell w.r.t client area
    shell.setSize(0,0);
    shell.setVisible(false);
    shell.open();

    FileDialog d = new FileDialog(shell);
    String s = d.open();

    shell.dispose (); 
    while (!shell.isDisposed ()) { 
        if (!display.readAndDispatch ()) display.sleep (); 
    } 

    return s;
} 
于 2013-08-01T08:42:18.357 に答える
0

シェルの上に を表示するときFileDialogは、ファイル ダイアログを開いてから、親シェルのサブシェル ( shell.getShells()) を取得して、ファイル ダイアログのシェルを見つけることができます。これで、その場所を変更できるはずです。

于 2013-08-03T16:34:10.130 に答える