SWT, Standard Widget Toolkit を利用した基本的なサンプルを紹介します。今回は Menu, Toolbar クラスのウィジェットです。
Menu
Menu および関連クラスのインスタンスはプルダウンメニューのメニューバーです。
List: SWTAppMenu.java
package menu;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class SWTAppMenu {
Shell shell;
public SWTAppMenu(Display display) {
shell = new Shell(display);
shell.setText("Menu");
initUI();
shell.setSize(300, 200);
shell.setLocation(100, 100);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
public void initUI() {
Menu menuBar = new Menu(shell, SWT.BAR);
shell.setMenuBar(menuBar);
MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeFileMenu.setText("ファイル");
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeFileMenu.setMenu(fileMenu);
MenuItem newItem = new MenuItem(fileMenu, SWT.PUSH);
newItem.setText("新規ファイル");
MenuItem openItem = new MenuItem(fileMenu, SWT.PUSH);
openItem.setText("ファイルを開く");
openItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String[] filters = new String[] { "Java sources",
"All Files (*)" };
String[] extensions = new String[] { "*.java", "*" };
FileDialog dialog = new FileDialog(shell, SWT.OPEN);
dialog.setFilterNames(filters);
dialog.setFilterExtensions(extensions);
String path = dialog.open();
if (path != null) {
System.out.println(path + "が選択されました。");
}
}
});
new MenuItem(fileMenu, SWT.SEPARATOR);
MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH);
exitItem.setText("アプリケーションの終了");
exitItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.getDisplay().dispose();
System.exit(0);
}
});
}
public static void main(String[] args) {
Display display = new Display();
new SWTAppMenu(display);
display.dispose();
}
}
実行例
Toolbar
Toolbar および関連クラスのインスタンスはプルダウンメニューの代わりにアイコンイメージなどのボタンでコマンドメニュー群を構成する場合に利用します。
List: SWTAppToolbar.java
package toolbar;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class SWTAppToolbar {
private Shell shell;
private Image newImage;
private Image openImage;
private Image exitImage;
public SWTAppToolbar(Display display) {
shell = new Shell(display);
shell.setText("Toolbar");
initUI();
shell.setSize(300, 200);
shell.setLocation(100, 100);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
public void initUI() {
Device dev = shell.getDisplay();
try {
newImage = new Image(dev, "image/document-new.png");
openImage = new Image(dev, "image/document-open.png");
exitImage = new Image(dev, "image/application-exit.png");
} catch (Exception e) {
System.out.println("Cannot load images");
System.out.println(e.getMessage());
System.exit(1);
}
ToolBar toolBar = new ToolBar(shell, SWT.BORDER);
ToolItem newItem = new ToolItem(toolBar, SWT.PUSH);
newItem.setImage(newImage);
newItem.setToolTipText("新規ファイル");
ToolItem openItem = new ToolItem(toolBar, SWT.PUSH);
openItem.setImage(openImage);
openItem.setToolTipText("ファイルを開く");
openItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String[] filters = new String[] { "Java sources",
"All Files (*)" };
String[] extensions = new String[] { "*.java", "*" };
FileDialog dialog = new FileDialog(shell, SWT.OPEN);
dialog.setFilterNames(filters);
dialog.setFilterExtensions(extensions);
String path = dialog.open();
if (path != null) {
System.out.println(path + "が選択されました。");
}
}
});
new ToolItem(toolBar, SWT.SEPARATOR);
ToolItem exitItem = new ToolItem(toolBar, SWT.PUSH);
exitItem.setImage(exitImage);
exitItem.setToolTipText("アプリケーションの終了");
exitItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.getDisplay().dispose();
System.exit(0);
}
});
toolBar.pack();
}
public static void main(String[] args) {
Display display = new Display();
new SWTAppToolbar(display);
display.dispose();
}
}
このサンプルでは、終了時にイメージの廃棄処理をしていませんので、メモリに残ってしまいます。ImageRegistry を利用した例を、JFace のサンプルで説明する予定です。




0 件のコメント:
コメントを投稿