SWT の org.eclipse.swt.widgets.MessageBox クラスを使うと、いろいろなダイアログを表示することができます。
どのような種類のダイアログを表示するかは、コンストラクタでアイコンの種類と、ボタンの種類を渡して指定します。
SWT.ICON_ERROR
SWT.ICON_INFORMATION
SWT.ICON_QUESTION
SWT.ICON_WARNING
SWT.ICON_WORKING
SWT.OK
SWT.OK│SWT.CANCEL
SWT.YES│SWT.NO
SWT.YES│SWT.NO│SWT.CANCEL
SWT.RETRY│SWT.CANCEL
SWT.ABORT│SWT.RETRY│SWT.IGNORE
MessageBox msgBox = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
msgBox.setText("MessageBox");
msgBox.setMessage("SWT.ICON_ERROR | SWT.OK");
int reply = msgBox.open();
MessageBox msgBox2 = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK | SWT.CANCEL);
msgBox2.setText("MessageBox");
msgBox2.setMessage("SWT.INFORMATION | SWT.OK | SWT.CANCEL");
int reply = msgBox2.open();
MessageBox msgBox3 = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO);
msgBox3.setText("MessageBox");
msgBox3.setMessage("SWT.QUESTION | SWT.YES | SWT.NO");
int reply = msgBox3.open();
MessageBox msgBox4 = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES | SWT.NO | SWT.CANCEL);
msgBox4.setText("MessageBox");
msgBox4.setMessage("SWT.ICON_WARNING | SWT.YES | SWT.NO | SWT.CANCEL");
int reply = msgBox4.open();
MessageBox msgBox = new MessageBox(shell, SWT.ICON_WORKING | SWT.RETRY | SWT.CANCEL);
msgBox.setText("MessageBox");
msgBox.setMessage("SWT.ICON_WORKING | SWT.RETRY | SWT.CANCEL");
int reply = msgBox.open();
※ Windows Vista では SWT.ICON_INFORMATION
と SWT.ICON_WORKING
のアイコンは同じみたいです。
MessageBox msgBox = new MessageBox(shell, SWT.ICON_WORKING | SWT.ABORT | SWT.RETRY | SWT.IGNORE);
msgBox.setText("MessageBox");
msgBox.setMessage("SWT.ICON_WORKING | SWT.ABORT | SWT.RETRY | SWT.IGNORE");
int reply = msgBox.open();
MessageBox#open()
は、押されたボタンの値を int
値で返します。
この値は、表示するボタンの種類を決めるときに指定するのと同じ SWT.YES
や SWT.NO
などの値です。
MessageBox msgBox = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK | SWT.CANCEL);
msgBox.setMessage("Do you wish to continue?");
int reply = msgBox.open();
if (reply != SWT.OK) {
return;
}
下記のような MsgBox クラスを作成しておけば、MessageBox の表示を、
MsgBox.show("Hello!");
のように簡単に実行できるようになります。
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.SWT;
public final class MsgBox {
static private MessageBox msg = new MessageBox(new Shell(), SWT.NULL);
public static void show(String message) {
msg.setMessage(message);
msg.open();
}
public static void show(String title, String message) {
msg.setText(title);
msg.setMessage(message);
msg.open();
}
}