08 April 2015

(Java) SWTコモンダイアログの使い方メモ

代表的なSWTコモンダイアログの使い方メモ

それぞれのクラスの言語ヘルプは、こちらのEclipse言語リファレンスに掲載されている。

ファイル・ダイアログ (FileDialog)

20150408-swt-filedialog.jpg

赤で着色した部分が、ファイル・ダイアログの表示初期化部分。青で着色した部分が、ダイアログの表示と選択されたファイル名を受け取る部分。

・SWT.SAVE : ファイルの保存ダイアログ
・SWT.OPEN : ファイルを開くダイアログ
・SWT.MULTI : 複数ファイルの選択可能なファイルを開くダイアログ

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display, SWT.SHELL_TRIM);
    // レイアウト全体の基本設計
    this.setSize(400, 100);
    this.setText("ヴィジェットのテスト");
    shell.setLayout(new RowLayout(SWT.VERTICAL));
    // レイアウトに配置する要素(ヴィジェット)
    Text t = new Text(shell, SWT.READ_ONLY);
    t.setText("まだファイルが選択されていません");
    // レイアウト下部に表示するボタン
    Button button = new Button(shell, SWT.NULL);
    button.setText("ダイアログの表示");
    button.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // 読み込み用ダイアログを開く
            FileDialog fileDlg = new FileDialog(shell,SWT.OPEN);
            String [] exts = {"*.txt","*.*"};
            fileDlg.setFilterExtensions(exts);
            String [] filterNames = {"テキストファイル(*.txt)", 
                    "全てのファイル(*.*)"};
            fileDlg.setFilterNames(filterNames);
            fileDlg.setText("ファイル・ダイアログのサンプル");
            String selectedFilename = fileDlg.open();
            if(selectedFilename != null && !selectedFilename.isEmpty()) t.setText(selectedFilename);
        }
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

ディレクトリ・ダイアログ (DirectoryDialog)

20150408-swt-dirdialog.jpg

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display, SWT.SHELL_TRIM);
    // レイアウト全体の基本設計
    this.setSize(400, 100);
    this.setText("ヴィジェットのテスト");
    shell.setLayout(new RowLayout(SWT.VERTICAL));
    // レイアウトに配置する要素(ヴィジェット)
    Text t = new Text(shell, SWT.READ_ONLY);
    t.setText("まだファイルが選択されていません");
    // レイアウト下部に表示するボタン
    Button button = new Button(shell, SWT.NULL);
    button.setText("ダイアログの表示");
    button.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // ディレクトリ選択ダイアログを開く
           DirectoryDialog fileDlg = new DirectoryDialog(shell,SWT.NONE);
            fileDlg.setText("ファイル・ダイアログのサンプル");
            String selectedFilename = fileDlg.open();
            if(selectedFilename != null && !selectedFilename.isEmpty()) t.setText(selectedFilename);
        }
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

カラー・ダイアログ (ColorDialog)

20150408-swt-colordialog.jpg

選択された色はRGB形式で返されます。

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display, SWT.SHELL_TRIM);
    // レイアウト全体の基本設計
    this.setSize(400, 100);
    this.setText("ヴィジェットのテスト");
    shell.setLayout(new RowLayout(SWT.VERTICAL));
    // レイアウトに配置する要素(ヴィジェット)
    Text t = new Text(shell, SWT.READ_ONLY);
    t.setText("まだファイルが選択されていません");
    // レイアウト下部に表示するボタン
    Button button = new Button(shell, SWT.NULL);
    button.setText("ダイアログの表示");
    button.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // カラー選択ダイアログを開く
           ColorDialog colorDlg = new ColorDialog(shell,SWT.NONE);
            colorDlg.setText("カラー・ダイアログのサンプル");
            RGB selectedColor = colorDlg.open();
            if(selectedColor != null) t.setText(selectedColor.toString());
        }
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

フォント・ダイアログ (FontDialog)

20150408-swt-fontdialog.jpg

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display, SWT.SHELL_TRIM);
    // レイアウト全体の基本設計
    this.setSize(400, 100);
    this.setText("ヴィジェットのテスト");
    shell.setLayout(new RowLayout(SWT.VERTICAL));
    // レイアウトに配置する要素(ヴィジェット)
    Text t = new Text(shell, SWT.READ_ONLY);
    t.setText("まだファイルが選択されていません");
    // レイアウト下部に表示するボタン
    Button button = new Button(shell, SWT.NULL);
    button.setText("ダイアログの表示");
    button.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // フォント選択ダイアログを開く
            FontDialog fontDlg = new FontDialog(shell,SWT.NONE);
            fontDlg.setText("フォント・ダイアログのサンプル");
            FontData selectedFont = fontDlg.open();
            if(selectedFont != null) t.setText(selectedFont.toString());
        }
        }
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}