Samples > ポップアップメニューを作成する(SWT編) |
|
ポップアップメニューを作成する(SWT編)ウィジェットを右クリックすることで表示されるポップアップメニューを作るには、Menuクラスを使用します。これはウィンドウのメニューバーで使用したものと同じクラスです。ポップアップメニューで表示するときは、Menuクラスのコンストラクタ引き数にSWT.POP_UPを指定します。そのMenuにMenuItemを追加して、Control#setMenuメソッドで任意のウィジェットにMenuをセットします。メニューアイテムが選択されたときの動作は、addSelectionListenerでイベントハンドリングをします。 Shell shell = new Shell(...); Text text = new Text(shell, ...); ... Menu menu = new Menu(shell, SWT.POP_UP); MenuItem item = new MenuItem(menu, SWT.PUSH); item.setText("..."); item.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { //メニューアイテムが選択されたときの処理 ... } }); ... text.setMenu(menu); またJFaceのMenuManagerを使ってメニューを作成することもできます。この場合は、Actionクラスでメニューアイテム選択時のイベント処理を記述し、それをMenuManagerに登録するという形になります。詳しくは、「ポップアップメニューを作成する (JFace編)」を参照してください。 サンプルプログラム以下のサンプルは、StyledTextにポップアップメニューを表示しています。メニューから文字の前景色を変えたり、ワードラップのオン・オフを切り替えることができます。 ソースコード (PopupMenuTest.java)import org.eclipse.swt.widgets.*; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.*; public class PopupMenuTest { public static void main(String[] args) { new PopupMenuTest(); } public PopupMenuTest() { final Display display = new Display(); Shell shell = new Shell(display); shell.setText("PopupMenuTest"); shell.setLayout(new RowLayout()); final StyledText text = new StyledText(shell, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); text.setLayoutData(new RowData(200, 100)); text.setText("ポップアップメニューのテスト"); Menu menu = new Menu(shell, SWT.POP_UP); MenuItem itemRed = new MenuItem(menu, SWT.PUSH); itemRed.setText("Red"); itemRed.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { text.setForeground(display.getSystemColor(SWT.COLOR_RED)); } }); MenuItem itemBlack = new MenuItem(menu, SWT.PUSH); itemBlack.setText("Black"); itemBlack.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { text.setForeground(display.getSystemColor(SWT.COLOR_BLACK)); } }); MenuItem itemSeparator = new MenuItem(menu, SWT.SEPARATOR); MenuItem itemWrap = new MenuItem(menu, SWT.RADIO); itemWrap.setText("Word Wrap"); itemWrap.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { boolean b = text.getWordWrap(); text.setWordWrap(!b); } }); text.setMenu(menu); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } 最新更新日: 2005年6月13日 |
- PR -
マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。 シマンテック 割引価格! オンライン販売だから低価格。いつでも簡単、見積・購入。 |
||||
|
|||||
Copyright(C) 2003,2004 Jasmin Project. All Right Reserved. |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||