SWTオブジェクト "メニュー"を使用してメニューを作成しようとしています。コードの ラインはかなり単純です:Java SWT例外: "java.lang.IllegalArgumentException":メニューがPOP_UPではありません
Exception in thread "main" java.lang.IllegalArgumentException: Menu is not a POP_UP
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Control.setMenu(Unknown Source)
at labo.Laboratory.createShell(Laboratory.java:25)
at labo.Laboratory.main(Laboratory.java:15)
関与しているようだSWTコードが「setMenu」方法からいずれかです。
public static void main(String[] args) {
createShell();
}
private static void createShell() {
Display display = new Display();
Shell shell = new Shell(display, SWT.SHELL_TRIM);
Menu menu = new Menu(shell, SWT.BAR);
shell.setMenu(menu);
shell.open();
while (! shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
は、実行時に、私は次の例外を取得します:
public void setMenu (Menu menu) {
checkWidget();
if (menu != null) {
if (menu.isDisposed()) error(SWT.ERROR_INVALID_ARGUMENT);
if ((menu.style & SWT.POP_UP) == 0) {
error (SWT.ERROR_MENU_NOT_POP_UP);
}
if (menu.parent != menuShell()) {
error (SWT.ERROR_INVALID_PARENT);
}
}
this.menu = menu;
}
Obvisously私はCの次の行に移動ode:
if ((menu.style & SWT.POP_UP) == 0) {
error (SWT.ERROR_MENU_NOT_POP_UP);
}
しかし、なぜ私は理解できません。私が実行しようとしているコードは、どこでも有効な例として与えられていますが、私にとってはうまくいきません。
私はeclipse IDEとJava 8 JREを使用しています。 SWTライブラリはeclipseネオンが提供するライブラリです。私が使用しているOSはWindows 7です。
このエラーは他のコンピュータや設定で再現しましたが、奇妙なことに他の誰もそれに直面していないようです。
それです。私はsetMenuBarの代わりにsetMenuメソッドを選んだ。 – burgerLove
それは私の非常にばかげたミスでした。ご協力いただき誠にありがとうございます :-) – burgerLove