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 件のコメント:
コメントを投稿