2

ボタンクリックイベントでSWTファイルブラウザを開こうとしています。

tnAddFiles.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                     new FileBrowser();

                }
            });

このエラーが発生しています

Exception in thread "main" org.eclipse.swt.SWTError: Not implemented [multiple displays]
    at org.eclipse.swt.SWT.error(SWT.java:4387)
    at org.eclipse.swt.widgets.Display.checkDisplay(Display.java:706)
    at org.eclipse.swt.widgets.Display.create(Display.java:807)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:130)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:699)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:690)
    at com.rawzor.ui.FileBrowser.<init>(FileBrowser.java:34)
4

1 に答える 1

7

そのWebサイトの実装を使用していると思います。この場合、このコードは次の行を使用します。

Display display = new Display();

これにより、新しいが初期化されますDisplay。あなたのアプリケーションはすでにDisplayこれを持っているので、これは

SWTError:実装されていません[複数のディスプレイ]

FileDialog解決策は、ファイルの選択に組み込みのクラスを使用することです。

FileDialog fd = new FileDialog(shell, SWT.OPEN);
fd.setText("Open file");
fd.setFilterPath("C:/");
String[] filterExt = { "*.txt", "*.doc", ".rtf", "*.*" };
fd.setFilterExtensions(filterExt);
String file= fd.open();
System.out.println(file);

またはDirectoryDialogディレクトリ選択の場合:

DirectoryDialog dlg = new DirectoryDialog(shell);
dlg.setText("Choose directory");
dlg.setFilterPath("C:/");
String dir = dlg.open();
System.out.println(dir);
于 2013-02-08T09:01:13.510 に答える