gpt4 book ai didi

Java SWT异常: "java.lang.IllegalArgumentException" : Menu is not a POP_UP

转载 作者:行者123 更新时间:2023-12-02 11:55:24 24 4
gpt4 key购买 nike

我尝试使用 SWT 对象“Menu”创建一个菜单。代码行相当简单:

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();

}

在运行时,我收到以下异常:

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 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;

}

显然我会转到以下代码行:

if ((menu.style & SWT.POP_UP) == 0) {
error (SWT.ERROR_MENU_NOT_POP_UP);
}

但我不明白为什么。我尝试执行的代码在各处都作为有效示例给出,但它对我不起作用。

我正在使用 Eclipse IDE 和 Java 8 JRE。SWT库是eclipse neon提供的。我使用的操作系统是Windows 7。

我已经用其他计算机和配置重现了这个错误,但奇怪的是似乎没有其他人遇到这个错误。

最佳答案

setMenu 方法设置任何控件的弹出菜单。此菜单样式必须SWT.POP_UP

您可能正在寻找 ShellsetMenuBar 方法,该方法设置窗口顶部的菜单栏(macOS 上的屏幕顶部)。这要求菜单样式为 SWT.BAR

关于Java SWT异常: "java.lang.IllegalArgumentException" : Menu is not a POP_UP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com