Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SWT MessageBox关闭按钮已禁用_Java_Swt_Messagebox - Fatal编程技术网

Java SWT MessageBox关闭按钮已禁用

Java SWT MessageBox关闭按钮已禁用,java,swt,messagebox,Java,Swt,Messagebox,我将JavaSWT用于应用程序UI。当我使用SWTMessageBox向用户提问时,我使用: MessageBox messageBox = new MessageBox(new Shell(Display.getCurrent()), SWT.YES | SWT.NO | SWT.ICON_QUESTION); 但当对话框打开时,关闭(红色X按钮)被禁用。要启用它,我可以做些什么?很抱歉,这是不可能的。通过查看Java SWT的源代码,我调查了: src/org/eclipse/swt/wi

我将JavaSWT用于应用程序UI。当我使用SWT
MessageBox
向用户提问时,我使用:

MessageBox messageBox = new MessageBox(new Shell(Display.getCurrent()), SWT.YES | SWT.NO | SWT.ICON_QUESTION);

但当对话框打开时,关闭(红色X按钮)被禁用。要启用它,我可以做些什么?

很抱歉,这是不可能的。通过查看Java SWT的源代码,我调查了:
src/org/eclipse/swt/widgets/MessageBox.java第206行:

OS.MessageBox (hwndOwner, buffer1, buffer2, bits);
使用JNI运行本机C代码的: src/os.c第8939行:

rc = (jint)MessageBoxA((HWND)arg0, (LPSTR)lparg1, (LPSTR)lparg2, arg3);
这就是用JavaSWT封装的MessageBox的真正Win32 API代码。并且不允许启用[X]按钮。正如您在这里看到的:

只有在添加SWT.CANCEL按钮时才启用该选项,[X]的作用与此相同。

也许这可以帮助您:@joey如果该链接是关于Swing的,那么这个问题是关于SWT的。您不应该在那里创建新的Shell,您应该传递一个现有的Shell。@gregh-449您是对的,我没有注意到该链接是关于Swing的。道歉。我会继续调查的。谢谢!你是对的。我切换到在所有情况下仅使用ok和cancel的MessageBox:(